11template<
typename PlanTable>
19 auto selectivity = double(result_size) / double(cardinality);
21 Eigen::RowVectorXd feature_matrix(3);
29template<
typename PlanTable>
38 M_insist(cardinality_left > 0
and cardinality_right > 0);
39 auto redundancy_left = cardinality_left / num_distinct_values_left;
40 auto redundancy_right = cardinality_right / num_distinct_values_right;
43 auto post_join = CE.
estimate_join(G, *PT[left].model, *PT[right].model, condition);
46 Eigen::RowVectorXd feature_matrix(6);
56template<
typename PlanTable>
59 const std::vector<const Expr*>&)
const
61 Eigen::RowVectorXd feature_matrix(3);
88 const std::vector<const Expr*>&)
const;
92 const std::vector<const Expr*>&)
const;
virtual std::unique_ptr< DataModel > estimate_filter(const QueryGraph &G, const DataModel &data, const cnf::CNF &filter) const =0
Applies a filter to a DataModel.
virtual double predict_number_distinct_values(const DataModel &data) const
virtual std::unique_ptr< DataModel > estimate_join(const QueryGraph &G, const DataModel &left, const DataModel &right, const cnf::CNF &condition) const =0
Form a new DataModel by joining two DataModels.
virtual std::size_t predict_cardinality(const DataModel &data) const =0
This table represents all explored plans with their sub-plans, estimated size, cost,...
This table represents all explored plans with their sub-plans, estimated size, cost,...
The query graph represents all data sources and joins in a graph structure.
Implements a small and efficient set over integers in the range of 0 to 63 (including).
std::unique_ptr< CostModel > filter_model_
double operator()(calculate_filter_cost_tag, PlanTable &&PT, const QueryGraph &G, const CardinalityEstimator &CE, Subproblem sub, const cnf::CNF &condition) const
std::unique_ptr< CostModel > join_model_
std::unique_ptr< CostModel > grouping_model_
A CNF represents a conjunction of cnf::Clauses.