mutable
A Database System for Research and Fast Prototyping
Loading...
Searching...
No Matches
Data Structures | Namespaces | Concepts | Macros | Typedefs | Functions | Variables
PhysicalOptimizer.hpp File Reference
#include <functional>
#include "IR/PhysicalPlanTable.hpp"
#include <limits>
#include <mutable/IR/Operator.hpp>
#include <type_traits>
#include <unordered_map>
#include <utility>
#include <vector>
Include dependency graph for PhysicalOptimizer.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  m::is_pattern< typename >
 
struct  m::pattern_t< Op, Children >
 
struct  m::is_pattern< pattern_t< Ts... > >
 
struct  m::has_producer_root< typename >
 
struct  m::has_producer_root< Op >
 
struct  m::has_producer_root< pattern_t< Op, Children... > >
 
struct  m::pattern_validator< typename >
 
struct  m::pattern_validator< Op >
 
struct  m::get_nodes< Op >
 
struct  m::get_nodes< pattern_t< Op, Children... > >
 
struct  m::is_singleton_pattern< typename >
 
struct  m::is_singleton_pattern< Op >
 
struct  m::is_singleton_pattern< pattern_t< Op, Wildcard > >
 
struct  m::is_singleton_pattern< pattern_t< Op, Wildcard, Wildcard > >
 
struct  m::get_singleton_operator< Op >
 
struct  m::get_singleton_operator< pattern_t< Op, Wildcard > >
 
struct  m::get_singleton_operator< pattern_t< Op, Wildcard, Wildcard > >
 
struct  m::setup_t
 
struct  m::teardown_t
 
struct  m::MatchBase
 
struct  m::pattern_matcher_base
 Abstract base class of all matchable patterns. More...
 
struct  m::PhysicalOptimizer
 The physical optimizer interface. More...
 
struct  m::PhysicalOptimizerImpl< PhysicalPlanTable >
 Concrete PhysicalOptimizer implementation using a concrete statically-typed. More...
 
struct  m::PhysicalOperator
 
struct  m::pattern_matcher_recursive< PhysOp, Idx, Op, PatternQueue... >
 
struct  m::pattern_matcher_recursive< PhysOp, Idx, pattern_t< Op, Children... >, PatternQueue... >
 
struct  m::pattern_matcher_impl< PhysOp, PhysOpt >
 

Namespaces

namespace  m
 

‍mutable namespace


 

Concepts

concept  m::logical_operator
 
concept  m::producer
 
concept  m::consumer
 
concept  m::is_pattern_v
 
concept  m::producer_root
 
concept  m::valid_pattern
 
concept  m::singleton_pattern
 

Macros

#define DECLARE(CLASS)
 
#define M_PHYS_OPT_LIST(X)    X(PhysicalOptimizerImpl<ConcretePhysicalPlanTable>)
 
#define DECLARE(CLASS)    extern template struct m::CLASS;
 

Typedefs

using m::Wildcard = Producer
 
template<std::size_t I, typename... Ts>
using m::ith_type_of = std::tuple_element_t< I, std::tuple< Ts... > >
 
template<typename T >
using m::get_nodes_t = typename get_nodes< T >::type
 
template<singleton_pattern T>
using m::get_singleton_operator_t = typename get_singleton_operator< T >::type
 
using m::pipeline_t = std::function< void(void)>
 

Functions

template<consumer Op, producer_root... Children>
requires (sizeof...(Children) != 0)
 m::and (sizeof...(Children)<=2) struct pattern_validator< pattern_t< Op
 
 m::M_DECLARE_VISITOR (PhysOptVisitor, PhysicalOptimizer, M_PHYS_OPT_LIST) M_DECLARE_VISITOR(ConstPhysOptVisitor
 
 m::M_PHYS_OPT_LIST (DECLARE) template< typename Actual
 A PhysicalOperator represents a physical operation in a query plan.
 

Variables

 m::Children
 
const m::PhysicalOptimizer
 

Macro Definition Documentation

◆ DECLARE [1/2]

#define DECLARE (   CLASS)
Value:
void operator()(const CLASS &op) override { \
for (const auto &matcher : pattern_matchers_) \
matcher->matches(*this, op); \
}

Definition at line 395 of file PhysicalOptimizer.hpp.

◆ DECLARE [2/2]

#define DECLARE (   CLASS)     extern template struct m::CLASS;

Definition at line 395 of file PhysicalOptimizer.hpp.

◆ M_PHYS_OPT_LIST

#define M_PHYS_OPT_LIST (   X)     X(PhysicalOptimizerImpl<ConcretePhysicalPlanTable>)

Definition at line 388 of file PhysicalOptimizer.hpp.