@@ -33,73 +33,80 @@ class DataTable;
33
33
namespace optimizer {
34
34
namespace util {
35
35
36
- inline void to_lower_string (std::string& str) {
36
+ inline void to_lower_string (std::string & str) {
37
37
std::transform (str.begin (), str.end (), str.begin (), ::tolower);
38
38
}
39
39
40
40
template <class T >
41
- bool IsSubset (const std::unordered_set<T>& super_set,
42
- const std::unordered_set<T>& child_set) {
41
+ bool IsSubset (const std::unordered_set<T> & super_set,
42
+ const std::unordered_set<T> & child_set) {
43
43
for (auto element : child_set) {
44
44
if (super_set.find (element) == super_set.end ()) return false ;
45
45
}
46
46
return true ;
47
47
}
48
48
49
49
template <class T >
50
- void SetUnion (std::unordered_set<T>& new_set, std::unordered_set<T>& old_set) {
50
+ void SetUnion (std::unordered_set<T> & new_set, std::unordered_set<T> & old_set) {
51
51
for (auto element : old_set) new_set.insert (element);
52
52
}
53
53
54
54
// get the column IDs evaluated in a predicate
55
- void GetPredicateColumns (const catalog::Schema* schema,
56
- expression::AbstractExpression* expression,
57
- std::vector<oid_t >& column_ids,
58
- std::vector<ExpressionType>& expr_types,
59
- std::vector<type::Value>& values,
60
- bool & index_searchable);
61
-
62
- bool CheckIndexSearchable (storage::DataTable* target_table,
63
- expression::AbstractExpression* expression,
64
- std::vector<oid_t >& key_column_ids,
65
- std::vector<ExpressionType>& expr_types,
66
- std::vector<type::Value>& values, oid_t & index_id);
67
-
68
- void SplitPredicates (expression::AbstractExpression* expr,
69
- std::vector<expression::AbstractExpression*>& predicates);
70
-
71
- expression::AbstractExpression* CombinePredicates (
55
+ void GetPredicateColumns (const catalog::Schema * schema,
56
+ expression::AbstractExpression * expression,
57
+ std::vector<oid_t > & column_ids,
58
+ std::vector<ExpressionType> & expr_types,
59
+ std::vector<type::Value> & values,
60
+ bool & index_searchable);
61
+
62
+ bool CheckIndexSearchable (storage::DataTable * target_table,
63
+ expression::AbstractExpression * expression,
64
+ std::vector<oid_t > & key_column_ids,
65
+ std::vector<ExpressionType> & expr_types,
66
+ std::vector<type::Value> & values, oid_t & index_id);
67
+
68
+ void SplitPredicates (expression::AbstractExpression * expr,
69
+ std::vector<expression::AbstractExpression *> & predicates);
70
+
71
+ expression::AbstractExpression * CombinePredicates (
72
72
std::vector<std::shared_ptr<expression::AbstractExpression>> predicates);
73
73
74
- expression::AbstractExpression* CombinePredicates (
74
+ expression::AbstractExpression * CombinePredicates (
75
75
std::vector<AnnotatedExpression> predicates);
76
76
77
- void ExtractPredicates (expression::AbstractExpression* expr,
78
- std::vector<AnnotatedExpression>& annotated_predicates);
77
+ std::vector<AnnotatedExpression> ExtractPredicates (
78
+ expression::AbstractExpression *expr,
79
+ std::vector<AnnotatedExpression> annotated_predicates = {});
79
80
80
- expression::AbstractExpression* ConstructJoinPredicate (
81
- std::unordered_set<std::string>& table_alias_set,
82
- MultiTablePredicates& join_predicates);
81
+ expression::AbstractExpression * ConstructJoinPredicate (
82
+ std::unordered_set<std::string> & table_alias_set,
83
+ MultiTablePredicates & join_predicates);
83
84
84
- bool ContainsJoinColumns (const std::unordered_set<std::string>& l_group_alias,
85
- const std::unordered_set<std::string>& r_group_alias,
86
- const expression::AbstractExpression* expr);
85
+ bool ContainsJoinColumns (const std::unordered_set<std::string> & l_group_alias,
86
+ const std::unordered_set<std::string> & r_group_alias,
87
+ const expression::AbstractExpression * expr);
87
88
88
89
std::unique_ptr<planner::AbstractPlan> CreateCopyPlan (
89
- parser::CopyStatement* copy_stmt);
90
+ parser::CopyStatement * copy_stmt);
90
91
91
92
std::unordered_map<std::string, std::shared_ptr<expression::AbstractExpression>>
92
- ConstructSelectElementMap (std::vector<std::unique_ptr<expression::AbstractExpression>> &select_list);
93
-
94
- expression::AbstractExpression*
95
- TransformQueryDerivedTablePredicates (const std::unordered_map<std::string, std::shared_ptr<expression::AbstractExpression>>& alias_to_expr_map,
96
- expression::AbstractExpression* expr);
97
-
98
- // Extract equi-join keys from the join predicates (conjunction is already removed in each unit)
99
- void ExtractEquiJoinKeys (const std::vector<AnnotatedExpression> join_predicates,
100
- std::vector<std::unique_ptr<expression::AbstractExpression>>& left_keys,
101
- std::vector<std::unique_ptr<expression::AbstractExpression>>& right_keys,
102
- const std::unordered_set<std::string>& left_alias, const std::unordered_set<std::string>& right_alias);
93
+ ConstructSelectElementMap (
94
+ std::vector<std::unique_ptr<expression::AbstractExpression>> &select_list);
95
+
96
+ expression::AbstractExpression *TransformQueryDerivedTablePredicates (
97
+ const std::unordered_map<std::string,
98
+ std::shared_ptr<expression::AbstractExpression>>
99
+ &alias_to_expr_map,
100
+ expression::AbstractExpression *expr);
101
+
102
+ // Extract equi-join keys from the join predicates (conjunction is already
103
+ // removed in each unit)
104
+ void ExtractEquiJoinKeys (
105
+ const std::vector<AnnotatedExpression> join_predicates,
106
+ std::vector<std::unique_ptr<expression::AbstractExpression>> &left_keys,
107
+ std::vector<std::unique_ptr<expression::AbstractExpression>> &right_keys,
108
+ const std::unordered_set<std::string> &left_alias,
109
+ const std::unordered_set<std::string> &right_alias);
103
110
104
111
} // namespace util
105
112
} // namespace optimizer
0 commit comments