[fix](memory) Fix AggFunc memory leak due to incorrect destroy (#19126)

This commit is contained in:
Xinyi Zou
2023-04-27 14:58:32 +08:00
committed by GitHub
parent 30f2f67ca1
commit f23c93b3c6
15 changed files with 126 additions and 53 deletions

View File

@ -631,7 +631,14 @@ Status AggregationNode::close(RuntimeState* state) {
Status AggregationNode::_create_agg_status(AggregateDataPtr data) {
for (int i = 0; i < _aggregate_evaluators.size(); ++i) {
_aggregate_evaluators[i]->create(data + _offsets_of_aggregate_states[i]);
try {
_aggregate_evaluators[i]->create(data + _offsets_of_aggregate_states[i]);
} catch (...) {
for (int j = 0; j < i; ++j) {
_aggregate_evaluators[j]->destroy(data + _offsets_of_aggregate_states[j]);
}
throw;
}
}
return Status::OK();
}