Skip to content

Commit fd5d85c

Browse files
committed
Remove unneeded computed_data
1 parent e401c17 commit fd5d85c

File tree

3 files changed

+9
-25
lines changed

3 files changed

+9
-25
lines changed

cpp/arcticdb/processing/clause.cpp

+2-4
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,8 @@ OutputSchema FilterClause::modify_schema(OutputSchema&& output_schema) const {
149149
for (const auto& field: output_schema.stream_descriptor_.fields()) {
150150
column_types.emplace(field.name(), field.type().data_type());
151151
}
152-
std::unordered_map<std::string, std::optional<DataType>> computed_data;
153152
auto expr = expression_context_->expression_nodes_.get_value(expression_context_->root_node_name_.value);
154-
auto opt_datatype = expr->compute(*expression_context_, column_types, computed_data);
153+
auto opt_datatype = expr->compute(*expression_context_, column_types);
155154
user_input::check<ErrorCode::E_INVALID_USER_ARGUMENT>(!opt_datatype.has_value(), "FilterClause AST produces a column, not a bitset");
156155
return output_schema;
157156
}
@@ -208,9 +207,8 @@ OutputSchema ProjectClause::modify_schema(OutputSchema&& output_schema) const {
208207
for (const auto& field: output_schema.stream_descriptor_.fields()) {
209208
column_types.emplace(field.name(), field.type().data_type());
210209
}
211-
std::unordered_map<std::string, std::optional<DataType>> computed_data;
212210
auto expr = expression_context_->expression_nodes_.get_value(expression_context_->root_node_name_.value);
213-
auto opt_datatype = expr->compute(*expression_context_, column_types, computed_data);
211+
auto opt_datatype = expr->compute(*expression_context_, column_types);
214212
user_input::check<ErrorCode::E_INVALID_USER_ARGUMENT>(opt_datatype.has_value(), "ProjectClause AST produces a bitset, not a column");
215213
output_schema.stream_descriptor_.add_scalar_field(*opt_datatype, output_column_);
216214
return output_schema;

cpp/arcticdb/processing/expression_node.cpp

+6-19
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,7 @@ VariantData ExpressionNode::compute(ProcessingUnit& seg) const {
7171
}
7272

7373
std::optional<DataType> ExpressionNode::compute(ExpressionContext& expression_context,
74-
const std::unordered_map<std::string, DataType>& column_types,
75-
std::unordered_map<std::string, std::optional<DataType>>& computed_data) const {
74+
const std::unordered_map<std::string, DataType>& column_types) const {
7675
std::optional<DataType> res;
7776
std::optional<DataType> left_type = util::variant_match(
7877
left_,
@@ -86,15 +85,9 @@ std::optional<DataType> ExpressionNode::compute(ExpressionContext& expression_co
8685
[&expression_context] (const ValueName& value_name) -> std::optional<DataType> {
8786
return expression_context.values_.get_value(value_name.value)->data_type_;
8887
},
89-
[&expression_context, &column_types, &computed_data] (const ExpressionName& expression_name) -> std::optional<DataType> {
90-
if (auto it = computed_data.find(expression_name.value); it != std::end(computed_data)) {
91-
return it->second;
92-
} else {
93-
auto expr = expression_context.expression_nodes_.get_value(expression_name.value);
94-
auto res = expr->compute(expression_context, column_types, computed_data);
95-
computed_data.try_emplace(expression_name.value, res);
96-
return res;
97-
}
88+
[&expression_context, &column_types] (const ExpressionName& expression_name) -> std::optional<DataType> {
89+
auto expr = expression_context.expression_nodes_.get_value(expression_name.value);
90+
return expr->compute(expression_context, column_types);
9891
},
9992
[] (auto&&) -> std::optional<DataType> {
10093
internal::raise<ErrorCode::E_ASSERTION_FAILURE>("Unexpected expression argument type");
@@ -161,15 +154,9 @@ std::optional<DataType> ExpressionNode::compute(ExpressionContext& expression_co
161154
empty_value_set = value_set->empty();
162155
return value_set->base_type().data_type();
163156
},
164-
[&expression_context, &column_types, &computed_data] (const ExpressionName& expression_name) -> std::optional<DataType> {
165-
if (auto it = computed_data.find(expression_name.value); it != std::end(computed_data)) {
166-
return it->second;
167-
} else {
157+
[&expression_context, &column_types] (const ExpressionName& expression_name) -> std::optional<DataType> {
168158
auto expr = expression_context.expression_nodes_.get_value(expression_name.value);
169-
auto res = expr->compute(expression_context, column_types, computed_data);
170-
computed_data.try_emplace(expression_name.value, res);
171-
return res;
172-
}
159+
return expr->compute(expression_context, column_types);
173160
},
174161
[] (auto&&) -> std::optional<DataType> {
175162
internal::raise<ErrorCode::E_ASSERTION_FAILURE>("Unexpected expression argument type");

cpp/arcticdb/processing/expression_node.hpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,7 @@ struct ExpressionNode {
9292
// TODO: better return type
9393
// TODO: Make expression_context const
9494
std::optional<DataType> compute(ExpressionContext& expression_context,
95-
const std::unordered_map<std::string, DataType>& column_types,
96-
std::unordered_map<std::string, std::optional<DataType>>& computed_data) const;
95+
const std::unordered_map<std::string, DataType>& column_types) const;
9796
};
9897

9998
} //namespace arcticdb

0 commit comments

Comments
 (0)