Skip to content
Snippets Groups Projects
Commit e714f59e authored by Foxido's avatar Foxido
Browse files

add costs to node dump

parent 9eada4e3
Branches
No related tags found
No related merge requests found
......@@ -33,7 +33,7 @@ struct std::hash<ColumnTag> {
class Operator {
public:
std::string format() const { return inner_format(0); }
std::string format(const TaskState& state) const { return inner_format(state, 0); }
virtual void update_eqclasses(const TaskState& task_state,
CHM& eq_classes) const = 0;
......@@ -47,7 +47,7 @@ class Operator {
virtual double cardinality(const TaskState& task_state) const = 0;
virtual ~Operator() = default;
virtual std::string inner_format(size_t padding) const = 0;
virtual std::string inner_format(const TaskState& state, size_t padding) const = 0;
};
class JoinOperator : Operator {
......@@ -66,7 +66,7 @@ class JoinOperator : Operator {
std::set<size_t> get_known_tables() const override;
std::string inner_format(size_t padding) const override;
std::string inner_format(const TaskState& state, size_t padding) const override;
private:
Operator* left_tree_;
......@@ -89,7 +89,7 @@ class ScanOperator : Operator {
std::set<size_t> get_known_tables() const override;
std::string inner_format(size_t padding) const override;
std::string inner_format(const TaskState& state, size_t padding) const override;
public:
size_t table_;
......
......@@ -28,12 +28,12 @@ ColumnTag::ColumnTag(const char *inp) {
col = inp[1]; // Next character after dot
}
std::string ScanOperator::inner_format(size_t padding) const {
std::string ScanOperator::inner_format(const TaskState& state, size_t padding) const {
std::string res;
std::string padding_str(padding, ' ');
res += fmt::format("{}Scan Operator on table {}\n{}Constants: ", padding_str,
table_, padding_str);
res += fmt::format("{}Scan Operator on table {} [cost = {}]\n{}Constants: ", padding_str,
table_, cost(state), padding_str);
for (auto &constant : constants_) {
res += fmt::format("{} ", constant.col);
}
......@@ -42,7 +42,7 @@ std::string ScanOperator::inner_format(size_t padding) const {
return res;
}
std::string JoinOperator::inner_format(size_t padding) const {
std::string JoinOperator::inner_format(const TaskState& state, size_t padding) const {
std::string padding_str(padding, ' ');
std::string clause_list = "";
......@@ -52,9 +52,9 @@ std::string JoinOperator::inner_format(size_t padding) const {
clause.second.table, clause.second.col);
}
return fmt::format("{}Join on {}\n{}{}", padding_str, clause_list,
left_tree_->inner_format(padding + 1),
right_tree_->inner_format(padding + 1));
return fmt::format("{}Join on {} [cost = {}]\n{}{}", padding_str, clause_list, cost(state),
left_tree_->inner_format(state, padding + 1),
right_tree_->inner_format(state, padding + 1));
}
ScanOperator::ScanOperator(const char *inp) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment