mutable
A Database System for Research and Fast Prototyping
Loading...
Searching...
No Matches
Data Structures | Public Types | Public Member Functions | Protected Member Functions | Friends
m::CardinalityEstimator Struct Referenceabstract

#include <CardinalityEstimator.hpp>

Inheritance diagram for m::CardinalityEstimator:
[legend]
Collaboration diagram for m::CardinalityEstimator:
[legend]

Data Structures

struct  data_model_exception
 data_model_exception is thrown if a DataModel implementation does not contain the requested information. More...
 

Public Types

using group_type = std::pair< std::reference_wrapper< const ast::Expr >, ThreadSafePooledOptionalString >
 

Public Member Functions

virtual ~CardinalityEstimator ()=0
 
virtual std::unique_ptr< DataModelempty_model () const =0
 Returns a DataModel representing the empty set.
 
virtual std::unique_ptr< DataModelestimate_scan (const QueryGraph &G, Subproblem P) const =0
 Creates a DataModel for a single DataSource.
 
virtual std::unique_ptr< DataModelestimate_filter (const QueryGraph &G, const DataModel &data, const cnf::CNF &filter) const =0
 Applies a filter to a DataModel.
 
virtual std::unique_ptr< DataModelestimate_limit (const QueryGraph &G, const DataModel &data, const std::size_t limit, const std::size_t offset) const =0
 Extracts a subset from a DataModel.
 
virtual std::unique_ptr< DataModelestimate_grouping (const QueryGraph &G, const DataModel &data, const std::vector< group_type > &groups) const =0
 Groups data in the DataModel.
 
virtual std::unique_ptr< DataModelestimate_join (const QueryGraph &G, const DataModel &left, const DataModel &right, const cnf::CNF &condition) const =0
 Form a new DataModel by joining two DataModels.
 
template<typename PlanTable >
std::unique_ptr< DataModelestimate_join_all (const QueryGraph &G, const PlanTable &PT, Subproblem to_join, const cnf::CNF &condition) const
 Compute a DataModel for the result of joining all DataSources in to_join by condition.
 
virtual std::size_t predict_cardinality (const DataModel &data) const =0
 
virtual double predict_number_distinct_values (const DataModel &data) const
 
M_LCOV_EXCL_STOP void dump (std::ostream &out) const
 
void dump () const
 

Protected Member Functions

virtual void print (std::ostream &out) const =0
 

Friends

M_LCOV_EXCL_START friend std::ostream & operator<< (std::ostream &out, const CardinalityEstimator &CE)
 

Detailed Description

Definition at line 56 of file CardinalityEstimator.hpp.

Member Typedef Documentation

◆ group_type

using m::CardinalityEstimator::group_type = std::pair<std::reference_wrapper<const ast::Expr>, ThreadSafePooledOptionalString>

Definition at line 59 of file CardinalityEstimator.hpp.

Constructor & Destructor Documentation

◆ ~CardinalityEstimator()

CardinalityEstimator::~CardinalityEstimator ( )
pure virtual

Definition at line 41 of file CardinalityEstimator.cpp.

Member Function Documentation

◆ dump() [1/2]

void CardinalityEstimator::dump ( ) const

Definition at line 55 of file CardinalityEstimator.cpp.

References dump().

Referenced by dump().

◆ dump() [2/2]

M_LCOV_EXCL_START void CardinalityEstimator::dump ( std::ostream &  out) const

Definition at line 49 of file CardinalityEstimator.cpp.

References print().

◆ empty_model()

virtual std::unique_ptr< DataModel > m::CardinalityEstimator::empty_model ( ) const
pure virtual

Returns a DataModel representing the empty set.

◆ estimate_filter()

virtual std::unique_ptr< DataModel > m::CardinalityEstimator::estimate_filter ( const QueryGraph G,
const DataModel data,
const cnf::CNF filter 
) const
pure virtual

Applies a filter to a DataModel.

Parameters
datathe DataModel describing the incoming data
filterthe condition of the filter as cnf::CNF
Returns
the DataModel describing the outcoming, i.e. filtered, data

Referenced by m::TrainedCostFunction::operator()().

◆ estimate_grouping()

virtual std::unique_ptr< DataModel > m::CardinalityEstimator::estimate_grouping ( const QueryGraph G,
const DataModel data,
const std::vector< group_type > &  groups 
) const
pure virtual

Groups data in the DataModel.

Parameters
datathe DataModel describing the incoming data
groupsa collection of Exprs to group by
Returns
the DataModel describing the grouped data

◆ estimate_join()

virtual std::unique_ptr< DataModel > m::CardinalityEstimator::estimate_join ( const QueryGraph G,
const DataModel left,
const DataModel right,
const cnf::CNF condition 
) const
pure virtual

Form a new DataModel by joining two DataModels.

Parameters
leftthe DataModel describing the data coming from the left input
rightthe DataModel describing the data coming from the right input
conditionthe join condition as cnf::CNF
Returns
the DataModel describing the join result

Referenced by m::pe::GOO::for_each_join(), IKKBZ::linearize(), m::TrainedCostFunction::operator()(), m::pe::hs::heuristics::bottomup_lookahead_cheapest< PlanTable, State >::operator()(), m::pe::hs::expansions::BottomUpComplete::operator()(), and m::PlanTableBase< Actual >::update().

◆ estimate_join_all()

template<typename PlanTable >
std::unique_ptr< DataModel > m::CardinalityEstimator::estimate_join_all ( const QueryGraph G,
const PlanTable &  PT,
Subproblem  to_join,
const cnf::CNF condition 
) const
inline

◆ estimate_limit()

virtual std::unique_ptr< DataModel > m::CardinalityEstimator::estimate_limit ( const QueryGraph G,
const DataModel data,
const std::size_t  limit,
const std::size_t  offset 
) const
pure virtual

Extracts a subset from a DataModel.

Parameters
datathe DataModel describing the incoming data
limitthe number of result tuples to extract
offsetthe offset of the first result tuple to extract
Returns
the estimated size of the limit result when applying op on P

◆ estimate_scan()

virtual std::unique_ptr< DataModel > m::CardinalityEstimator::estimate_scan ( const QueryGraph G,
Subproblem  P 
) const
pure virtual

Creates a DataModel for a single DataSource.

Parameters
Gthe QueryGraph of the query
Pthe Subproblem to be scanned, must identify a single DataSource
Returns
a DataModel of the scan result

◆ predict_cardinality()

virtual std::size_t m::CardinalityEstimator::predict_cardinality ( const DataModel data) const
pure virtual

◆ predict_number_distinct_values()

double CardinalityEstimator::predict_number_distinct_values ( const DataModel data) const
virtual

Definition at line 43 of file CardinalityEstimator.cpp.

Referenced by m::TrainedCostFunction::operator()().

◆ print()

virtual void m::CardinalityEstimator::print ( std::ostream &  out) const
protectedpure virtual

Referenced by dump().

Friends And Related Function Documentation

◆ operator<<

M_LCOV_EXCL_START friend std::ostream & operator<< ( std::ostream &  out,
const CardinalityEstimator CE 
)
friend

Definition at line 147 of file CardinalityEstimator.hpp.


The documentation for this struct was generated from the following files: