17 #ifndef QUERYENGINE_EXPRESSIONREWRITE_H
18 #define QUERYENGINE_EXPRESSIONREWRITE_H
20 #include <llvm/IR/Value.h>
21 #include <boost/optional.hpp>
48 std::list<std::shared_ptr<Analyzer::Expr>>
quals;
53 const std::shared_ptr<Analyzer::Expr> expr);
56 const std::list<std::shared_ptr<Analyzer::Expr>>& quals,
63 const int max_rte_covered);
66 std::unordered_map<int, llvm::Value*>& scan_idx_to_hash_pos);
68 #endif // QUERYENGINE_EXPRESSIONREWRITE_H
Defines data structures for the semantic analysis phase of query processing.
Analyzer::ExpressionPtr rewrite_array_elements(Analyzer::Expr const *expr)
bool self_join_not_covered_by_left_deep_tree(const Analyzer::ColumnVar *key_side, const Analyzer::ColumnVar *val_side, const int max_rte_covered)
std::list< std::shared_ptr< Analyzer::Expr > > quals
std::shared_ptr< Analyzer::Expr > ExpressionPtr
std::list< std::shared_ptr< Analyzer::Expr > > join_quals
std::vector< JoinCondition > JoinQualsPerNestingLevel
Analyzer::ExpressionPtr rewrite_expr(const Analyzer::Expr *expr)
std::list< std::shared_ptr< Analyzer::Expr > > strip_join_covered_filter_quals(const std::list< std::shared_ptr< Analyzer::Expr >> &quals, const JoinQualsPerNestingLevel &join_quals)
const int get_max_rte_scan_table(std::unordered_map< int, llvm::Value * > &scan_idx_to_hash_pos)
boost::optional< OverlapsJoinConjunction > rewrite_overlaps_conjunction(const std::shared_ptr< Analyzer::Expr > expr)
Execution unit for relational algebra. It's a low-level description of any relational algebra operati...
std::shared_ptr< Analyzer::Expr > fold_expr(const Analyzer::Expr *expr)