diff --git a/src/Interpreters/ExpressionAnalyzer.cpp b/src/Interpreters/ExpressionAnalyzer.cpp index 2f0dee58141..aab980bddc7 100644 --- a/src/Interpreters/ExpressionAnalyzer.cpp +++ b/src/Interpreters/ExpressionAnalyzer.cpp @@ -421,11 +421,17 @@ bool ExpressionAnalyzer::makeAggregateDescriptions(ActionsDAGPtr & actions) aggregate.argument_names.resize(arguments.size()); DataTypes types(arguments.size()); + const auto & index = actions->getIndex(); for (size_t i = 0; i < arguments.size(); ++i) { getRootActionsNoMakeSet(arguments[i], true, actions); const std::string & name = arguments[i]->getColumnName(); - types[i] = actions->getIndex().find(name)->second->result_type; + + auto it = index.find(name); + if (it == index.end()) + throw Exception(ErrorCodes::UNKNOWN_IDENTIFIER, "Unknown identifier (in aggregate function '{}'): {}", node->name, name); + + types[i] = it->second->result_type; aggregate.argument_names[i] = name; } diff --git a/tests/queries/0_stateless/01527_bad_aggregation_in_lambda.reference b/tests/queries/0_stateless/01527_bad_aggregation_in_lambda.reference new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/queries/0_stateless/01527_bad_aggregation_in_lambda.sql b/tests/queries/0_stateless/01527_bad_aggregation_in_lambda.sql new file mode 100644 index 00000000000..10ffca22bd1 --- /dev/null +++ b/tests/queries/0_stateless/01527_bad_aggregation_in_lambda.sql @@ -0,0 +1 @@ +SELECT arrayMap(x -> x * sum(x), range(10)); -- { serverError 47 }