32 #include "../Analyzer/Analyzer.h"
41 Plan(
const std::vector<std::shared_ptr<Analyzer::TargetEntry>>& t,
42 const std::list<std::shared_ptr<Analyzer::Expr>>& q,
46 Plan(
const std::vector<std::shared_ptr<Analyzer::TargetEntry>>& t,
double c,
Plan* p)
49 Plan(
const std::vector<std::shared_ptr<Analyzer::TargetEntry>>& t)
52 const std::vector<std::shared_ptr<Analyzer::TargetEntry>>&
get_targetlist()
const {
55 const std::list<std::shared_ptr<Analyzer::Expr>>&
get_quals()
const {
return quals; }
59 void set_targetlist(
const std::vector<std::shared_ptr<Analyzer::TargetEntry>>& t) {
62 virtual void print()
const;
65 std::vector<std::shared_ptr<Analyzer::TargetEntry>>
67 std::list<std::shared_ptr<Analyzer::Expr>>
87 Result(std::vector<std::shared_ptr<Analyzer::TargetEntry>>& t,
88 const std::list<std::shared_ptr<Analyzer::Expr>>& q,
91 const std::list<std::shared_ptr<Analyzer::Expr>>& cq)
96 void print()
const override;
99 std::list<std::shared_ptr<Analyzer::Expr>>
109 Scan(
const std::vector<std::shared_ptr<Analyzer::TargetEntry>>& t,
110 const std::list<std::shared_ptr<Analyzer::Expr>>& q,
113 std::list<std::shared_ptr<Analyzer::Expr>>& sq,
115 const std::list<int>& cl)
127 void print()
const override;
144 ValuesScan(
const std::vector<std::shared_ptr<Analyzer::TargetEntry>>& t) :
Plan(t) {}
145 void print()
const override;
154 Join(
const std::vector<std::shared_ptr<Analyzer::TargetEntry>>& t,
155 const std::list<std::shared_ptr<Analyzer::Expr>>& q,
160 void print()
const override;
174 AggPlan(
const std::vector<std::shared_ptr<Analyzer::TargetEntry>>& t,
177 const std::list<std::shared_ptr<Analyzer::Expr>>& gl)
183 const std::list<std::shared_ptr<Analyzer::Expr>>& new_groupby_list) {
186 void print()
const override;
189 std::list<std::shared_ptr<Analyzer::Expr>>
200 Append(
const std::vector<std::shared_ptr<Analyzer::TargetEntry>>& t,
201 const std::list<std::shared_ptr<Analyzer::Expr>>& q,
204 std::list<std::unique_ptr<Plan>>& pl)
207 void print()
const override;
220 MergeAppend(
const std::vector<std::shared_ptr<Analyzer::TargetEntry>>& t,
221 const std::list<std::shared_ptr<Analyzer::Expr>>& q,
224 std::list<std::unique_ptr<Plan>>& pl,
225 const std::list<Analyzer::OrderEntry>& oe)
233 void print()
const override;
247 Sort(
const std::vector<std::shared_ptr<Analyzer::TargetEntry>>& t,
250 const std::list<Analyzer::OrderEntry>& oe,
257 void print()
const override;
260 std::list<Analyzer::OrderEntry>
276 const std::list<int>& c,
294 virtual void print()
const;
void print() const override
void set_plan_dest(Dest d)
void add_tle(std::shared_ptr< Analyzer::TargetEntry > tle)
const Plan * get_plan() const
void add_simple_predicate(std::shared_ptr< Analyzer::Expr > pred)
const std::list< int > & get_col_list() const
const Analyzer::Query & query
bool get_remove_duplicates() const
MergeAppend(const std::vector< std::shared_ptr< Analyzer::TargetEntry >> &t, const std::list< std::shared_ptr< Analyzer::Expr >> &q, double c, Plan *p, std::list< std::unique_ptr< Plan >> &pl, const std::list< Analyzer::OrderEntry > &oe)
int get_result_table_id() const
class for a per-database catalog. also includes metadata for the current database and the current use...
const Plan * get_child_plan() const
std::list< Analyzer::OrderEntry > order_entries
const Catalog_Namespace::Catalog & catalog
std::unique_ptr< Plan > child_plan
std::list< std::shared_ptr< Analyzer::Expr > > const_quals
Plan(const std::vector< std::shared_ptr< Analyzer::TargetEntry >> &t, const std::list< std::shared_ptr< Analyzer::Expr >> &q, double c, Plan *p)
int64_t get_offset() const
SQLStmtType get_stmt_type() const
void add_predicate(std::shared_ptr< Analyzer::Expr > pred)
void process_targetlist()
std::list< int > result_col_list
Join(const std::vector< std::shared_ptr< Analyzer::TargetEntry >> &t, const std::list< std::shared_ptr< Analyzer::Expr >> &q, double c, Plan *p, Plan *cp2)
const std::list< std::shared_ptr< Analyzer::Expr > > & get_constquals() const
const Catalog_Namespace::Catalog & getCatalog() const
const Analyzer::Query * cur_query
void print() const override
Plan(const std::vector< std::shared_ptr< Analyzer::TargetEntry >> &t)
std::list< std::unique_ptr< Plan > > mergeplan_list
const std::list< std::unique_ptr< Plan > > & get_mergeplan_list() const
void print() const override
Sort(const std::vector< std::shared_ptr< Analyzer::TargetEntry >> &t, double c, Plan *p, const std::list< Analyzer::OrderEntry > &oe, bool d)
const std::list< Analyzer::OrderEntry > & get_order_entries() const
virtual void print() const
std::vector< std::shared_ptr< Analyzer::TargetEntry > > targetlist
const std::vector< std::shared_ptr< Analyzer::TargetEntry > > & get_targetlist() const
void print() const override
const std::list< std::unique_ptr< Plan > > & get_plan_list() const
const std::list< int > & get_result_col_list() const
std::list< std::unique_ptr< Plan > > plan_list
std::unique_ptr< Plan > plan
const int32_t groups_buffer_size return nullptr
void set_targetlist(const std::vector< std::shared_ptr< Analyzer::TargetEntry >> &t)
Scan(const std::vector< std::shared_ptr< Analyzer::TargetEntry >> &t, const std::list< std::shared_ptr< Analyzer::Expr >> &q, double c, Plan *p, std::list< std::shared_ptr< Analyzer::Expr >> &sq, int r, const std::list< int > &cl)
Result(std::vector< std::shared_ptr< Analyzer::TargetEntry >> &t, const std::list< std::shared_ptr< Analyzer::Expr >> &q, double c, Plan *p, const std::list< std::shared_ptr< Analyzer::Expr >> &cq)
void set_groupby_list(const std::list< std::shared_ptr< Analyzer::Expr >> &new_groupby_list)
std::list< Analyzer::OrderEntry > order_entries
const Plan * get_outerplan() const
const std::list< std::shared_ptr< Analyzer::Expr > > & get_quals() const
void print() const override
const std::string & get_render_type() const
std::list< const Analyzer::Expr * > join_predicates
Optimizer(const Analyzer::Query &q, const Catalog_Namespace::Catalog &c)
Plan(const std::vector< std::shared_ptr< Analyzer::TargetEntry >> &t, double c, Plan *p)
const Catalog_Namespace::Catalog & catalog
const std::list< Analyzer::OrderEntry > & get_order_entries() const
std::list< std::shared_ptr< Analyzer::Expr > > groupby_list
const Plan * get_innerplan() const
std::list< int > col_list
void print() const override
Dest get_plan_dest() const
const std::list< std::shared_ptr< Analyzer::Expr > > & get_groupby_list() const
void set_render_type(std::string t)
std::unique_ptr< Plan > child_plan2
void optimize_current_query()
int64_t get_limit() const
ValuesScan(const std::vector< std::shared_ptr< Analyzer::TargetEntry >> &t)
std::list< std::shared_ptr< Analyzer::Expr > > simple_quals
const std::list< std::shared_ptr< Analyzer::Expr > > & get_simple_quals() const
std::list< std::shared_ptr< Analyzer::Expr > > quals
virtual void print() const
std::list< const Analyzer::Expr * > const_predicates
RootPlan(Plan *p, SQLStmtType t, int r, const std::list< int > &c, const Catalog_Namespace::Catalog &cat, int64_t l, int64_t o)
Append(const std::vector< std::shared_ptr< Analyzer::TargetEntry >> &t, const std::list< std::shared_ptr< Analyzer::Expr >> &q, double c, Plan *p, std::list< std::unique_ptr< Plan >> &pl)
std::vector< Scan * > base_scans
AggPlan(const std::vector< std::shared_ptr< Analyzer::TargetEntry >> &t, double c, Plan *p, const std::list< std::shared_ptr< Analyzer::Expr >> &gl)
void print() const override
void print() const override