mutable
A Database System for Research and Fast Prototyping
Loading...
Searching...
No Matches
Data Structures | Public Types | Public Member Functions | Private Member Functions | Private Attributes
m::InjectionCardinalityEstimator Struct Reference

InjectionCardinalityEstimator that estimates cardinalities based on a table that contains sizes for the given subproblems Table is initialized in the constructor by using an external json-file If no entry is found, uses the DummyEstimator to return an estimate. More...

#include <CardinalityEstimator.hpp>

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

Data Structures

struct  InjectionCardinalityDataModel
 

Public Types

using Subproblem = SmallBitset
 

Public Member Functions

 InjectionCardinalityEstimator (ThreadSafePooledString name_of_database)
 Create an InjectionCardinalityEstimator for the database name_of_database from file that was passed by the user via commandline, saved in Options::Get().injected_cardinalities_file
 
 InjectionCardinalityEstimator (Diagnostic &diag, ThreadSafePooledString name_of_database, std::istream &in)
 Create an InjectionCardinalityEstimator for the database name_of_database from the inputstream in
 
 ~InjectionCardinalityEstimator ()=default
 
 InjectionCardinalityEstimator (const InjectionCardinalityEstimator &)=delete
 
 InjectionCardinalityEstimator (InjectionCardinalityEstimator &&)=default
 
InjectionCardinalityEstimatoroperator= (InjectionCardinalityEstimator &&)=default
 
std::unique_ptr< DataModelempty_model () const override
 
std::unique_ptr< DataModelestimate_scan (const QueryGraph &G, Subproblem P) const override
 
std::unique_ptr< DataModelestimate_filter (const QueryGraph &G, const DataModel &data, const cnf::CNF &filter) const override
 
std::unique_ptr< DataModelestimate_limit (const QueryGraph &G, const DataModel &data, std::size_t limit, std::size_t offset) const override
 
std::unique_ptr< DataModelestimate_grouping (const QueryGraph &G, const DataModel &data, const std::vector< group_type > &groups) const override
 
std::unique_ptr< DataModelestimate_join (const QueryGraph &G, const DataModel &left, const DataModel &right, const cnf::CNF &condition) const override
 
template<typename PlanTable >
std::unique_ptr< DataModeloperator() (estimate_join_all_tag, PlanTable &&PT, const QueryGraph &G, Subproblem to_join, const cnf::CNF &condition) const
 
std::size_t predict_cardinality (const DataModel &data) const override
 

Private Member Functions

void read_json (Diagnostic &diag, std::istream &in, const ThreadSafePooledString &name_of_database)
 
void print (std::ostream &out) const override
 
void buf_append (const char *s) const
 
void buf_append (const std::string &s) const
 
const char * buf_view () const
 
ThreadSafePooledString make_identifier (const QueryGraph &G, const Subproblem S) const
 

Private Attributes

std::vector< char > buf_
 

‍buffer used to construct identifiers


 
std::ostringstream oss_
 

‍buffer used to construct identifiers


 
std::unordered_map< ThreadSafePooledString, std::size_t > cardinality_table_
 
CartesianProductEstimator fallback_
 

Detailed Description

InjectionCardinalityEstimator that estimates cardinalities based on a table that contains sizes for the given subproblems Table is initialized in the constructor by using an external json-file If no entry is found, uses the DummyEstimator to return an estimate.

Definition at line 227 of file CardinalityEstimator.hpp.

Member Typedef Documentation

◆ Subproblem

Definition at line 229 of file CardinalityEstimator.hpp.

Constructor & Destructor Documentation

◆ InjectionCardinalityEstimator() [1/4]

M_LCOV_EXCL_STOP InjectionCardinalityEstimator::InjectionCardinalityEstimator ( ThreadSafePooledString  name_of_database)

Create an InjectionCardinalityEstimator for the database name_of_database from file that was passed by the user via commandline, saved in Options::Get().injected_cardinalities_file

Parameters
name_of_databasethe name of the database to create the InjectionCardinalityEstimator for

Definition at line 161 of file CardinalityEstimator.cpp.

References m::Options::Get(), read_json(), and m::Diagnostic::w().

◆ InjectionCardinalityEstimator() [2/4]

InjectionCardinalityEstimator::InjectionCardinalityEstimator ( Diagnostic diag,
ThreadSafePooledString  name_of_database,
std::istream &  in 
)

Create an InjectionCardinalityEstimator for the database name_of_database from the inputstream in

Parameters
name_of_databasethe name of the database to create the InjectionCardinalityEstimator for
ininputstream containing the injected cardinalities in JSON format

Definition at line 180 of file CardinalityEstimator.cpp.

References read_json().

◆ ~InjectionCardinalityEstimator()

m::InjectionCardinalityEstimator::~InjectionCardinalityEstimator ( )
default

◆ InjectionCardinalityEstimator() [3/4]

m::InjectionCardinalityEstimator::InjectionCardinalityEstimator ( const InjectionCardinalityEstimator )
delete

◆ InjectionCardinalityEstimator() [4/4]

m::InjectionCardinalityEstimator::InjectionCardinalityEstimator ( InjectionCardinalityEstimator &&  )
default

Member Function Documentation

◆ buf_append() [1/2]

void m::InjectionCardinalityEstimator::buf_append ( const char *  s) const
inlineprivate

Definition at line 311 of file CardinalityEstimator.hpp.

Referenced by make_identifier(), and read_json().

◆ buf_append() [2/2]

void m::InjectionCardinalityEstimator::buf_append ( const std::string &  s) const
inlineprivate

Definition at line 312 of file CardinalityEstimator.hpp.

◆ buf_view()

const char * m::InjectionCardinalityEstimator::buf_view ( ) const
inlineprivate

Definition at line 316 of file CardinalityEstimator.hpp.

Referenced by make_identifier(), and read_json().

◆ empty_model()

std::unique_ptr< DataModel > InjectionCardinalityEstimator::empty_model ( ) const
override

Definition at line 247 of file CardinalityEstimator.cpp.

◆ estimate_filter()

std::unique_ptr< DataModel > InjectionCardinalityEstimator::estimate_filter ( const QueryGraph G,
const DataModel data,
const cnf::CNF filter 
) const
override

Definition at line 268 of file CardinalityEstimator.cpp.

◆ estimate_grouping()

std::unique_ptr< DataModel > InjectionCardinalityEstimator::estimate_grouping ( const QueryGraph G,
const DataModel data,
const std::vector< group_type > &  groups 
) const
override

◆ estimate_join()

std::unique_ptr< DataModel > InjectionCardinalityEstimator::estimate_join ( const QueryGraph G,
const DataModel left,
const DataModel right,
const cnf::CNF condition 
) const
override

◆ estimate_limit()

std::unique_ptr< DataModel > InjectionCardinalityEstimator::estimate_limit ( const QueryGraph G,
const DataModel data,
std::size_t  limit,
std::size_t  offset 
) const
override

Definition at line 276 of file CardinalityEstimator.cpp.

◆ estimate_scan()

std::unique_ptr< DataModel > InjectionCardinalityEstimator::estimate_scan ( const QueryGraph G,
Subproblem  P 
) const
override

◆ make_identifier()

M_LCOV_EXCL_STOP ThreadSafePooledString InjectionCardinalityEstimator::make_identifier ( const QueryGraph G,
const Subproblem  S 
) const
private

◆ operator()()

template<typename PlanTable >
template std::unique_ptr< DataModel > InjectionCardinalityEstimator::operator() ( estimate_join_all_tag  ,
PlanTable &&  PT,
const QueryGraph G,
Subproblem  to_join,
const cnf::CNF condition 
) const

◆ operator=()

InjectionCardinalityEstimator & m::InjectionCardinalityEstimator::operator= ( InjectionCardinalityEstimator &&  )
default

◆ predict_cardinality()

std::size_t InjectionCardinalityEstimator::predict_cardinality ( const DataModel data) const
override

Definition at line 381 of file CardinalityEstimator.cpp.

◆ print()

M_LCOV_EXCL_START void InjectionCardinalityEstimator::print ( std::ostream &  out) const
overrideprivate

Number of rows of the cardinality_table printed

Length of Subproblem column

Definition at line 387 of file CardinalityEstimator.cpp.

References cardinality_table_.

◆ read_json()

void InjectionCardinalityEstimator::read_json ( Diagnostic diag,
std::istream &  in,
const ThreadSafePooledString name_of_database 
)
private

Field Documentation

◆ buf_

std::vector<char> m::InjectionCardinalityEstimator::buf_
mutableprivate

‍buffer used to construct identifiers

Definition at line 251 of file CardinalityEstimator.hpp.

Referenced by make_identifier(), and read_json().

◆ cardinality_table_

std::unordered_map<ThreadSafePooledString, std::size_t> m::InjectionCardinalityEstimator::cardinality_table_
private

◆ fallback_

CartesianProductEstimator m::InjectionCardinalityEstimator::fallback_
private

Definition at line 256 of file CardinalityEstimator.hpp.

Referenced by estimate_join(), and estimate_scan().

◆ oss_

std::ostringstream m::InjectionCardinalityEstimator::oss_
mutableprivate

‍buffer used to construct identifiers

Definition at line 253 of file CardinalityEstimator.hpp.

Referenced by estimate_grouping().


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