13#include "common/lang/unordered_set.h"
14#include "common/lang/vector.h"
15#include "common/lang/memory.h"
16#include "common/log/log.h"
17#include "sql/optimizer/cascade/group_expr.h"
18#include "sql/optimizer/cascade/group.h"
20const int UNDEFINED_GROUP = -1;
35 GroupExpr *insert_expression(
GroupExpr *gexpr) {
return insert_expression(gexpr, -1); }
39 Group *get_group_by_id(
int id)
const
42 ASSERT(idx >= 0 &&
static_cast<size_t>(idx) < groups_.size(),
"group_id out of bounds");
43 return groups_[idx].get();
48 void record_operator(unique_ptr<OperatorNode> &&node) { operator_nodes_.emplace(node.get(), std::move(node)); }
52 auto it = operator_nodes_.find(node);
53 if (it != operator_nodes_.end()) {
63 std::size_t operator()(
GroupExpr *
const &s)
const
87 vector<unique_ptr<Group>> groups_;
92 std::unordered_map<OperatorNode *, unique_ptr<OperatorNode>> operator_nodes_;
Definition: group_expr.h:25
A class representing a group within cascade optimizer.
Definition: group.h:32
: memorization
Definition: memo.h:29
std::unordered_set< GroupExpr *, GExprPtrHash, GExprPtrEq > group_expressions_
Definition: memo.h:85
Definition: operator_node.h:69