25 #ifndef QUERYENGINE_CARDINALITYESTIMATOR_H
26 #define QUERYENGINE_CARDINALITYESTIMATOR_H
30 #include "../Analyzer/Analyzer.h"
36 : std::runtime_error(
"CardinalityEstimationRequired"),
range_(range) {}
56 virtual const std::list<std::shared_ptr<Analyzer::Expr>>&
getArgument()
const = 0;
69 std::shared_ptr<Analyzer::Expr>
deep_copy()
const override {
93 NDVEstimator(
const std::list<std::shared_ptr<Analyzer::Expr>>& expr_tuple)
96 const std::list<std::shared_ptr<Analyzer::Expr>>&
getArgument()
const override {
103 return "linear_probabilistic_count";
121 const int64_t range);
125 std::shared_ptr<Analyzer::
Expr> replacement_target);
129 std::vector<std::pair<
ResultSetPtr, std::vector<
size_t>>>& results_per_device);
131 #endif // QUERYENGINE_CARDINALITYESTIMATOR_H
size_t getBufferSize() const final
const std::list< std::shared_ptr< Analyzer::Expr > > expr_tuple_
const std::list< std::shared_ptr< Analyzer::Expr > > & getArgument() const override
LargeNDVEstimator(const std::list< std::shared_ptr< Analyzer::Expr >> &expr_tuple)
std::shared_ptr< Analyzer::Expr > deep_copy() const override
CardinalityEstimationRequired(const int64_t range)
virtual std::string getRuntimeFunctionName() const =0
std::string getRuntimeFunctionName() const override
bool operator==(const Expr &rhs) const override
std::shared_ptr< ResultSet > ResultSetPtr
RelAlgExecutionUnit create_count_all_execution_unit(const RelAlgExecutionUnit &ra_exe_unit, std::shared_ptr< Analyzer::Expr > replacement_target)
NDVEstimator(const std::list< std::shared_ptr< Analyzer::Expr >> &expr_tuple)
bool g_enable_smem_group_by true
virtual size_t getBufferSize() const =0
size_t getBufferSize() const override
RelAlgExecutionUnit create_ndv_execution_unit(const RelAlgExecutionUnit &ra_exe_unit, const int64_t range)
ResultSetPtr reduce_estimator_results(const RelAlgExecutionUnit &ra_exe_unit, std::vector< std::pair< ResultSetPtr, std::vector< size_t >>> &results_per_device)
std::string toString() const override
Execution unit for relational algebra. It's a low-level description of any relational algebra operati...
virtual const std::list< std::shared_ptr< Analyzer::Expr > > & getArgument() const =0