From 602baf62f00c653975432bd9a9f32e9ad70774fa Mon Sep 17 00:00:00 2001 From: Ildus Kurbangaliev Date: Thu, 16 Apr 2020 17:26:17 +0000 Subject: [PATCH] Improve implementation of sumMap for tuples --- src/AggregateFunctions/AggregateFunctionSumMap.h | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/AggregateFunctions/AggregateFunctionSumMap.h b/src/AggregateFunctions/AggregateFunctionSumMap.h index 88ee10f4627..be58a82c0c8 100644 --- a/src/AggregateFunctions/AggregateFunctionSumMap.h +++ b/src/AggregateFunctions/AggregateFunctionSumMap.h @@ -81,17 +81,16 @@ public: void add(AggregateDataPtr place, const IColumn ** columns, const size_t row_num, Arena *) const override { // Check if tuple - std::unique_ptr tuple_columns; auto tuple_col = checkAndGetColumn(columns[0]); if (tuple_col) - { - tuple_columns.reset(new const IColumn*[tuple_col->tupleSize()]); - for (size_t i = 0; i < tuple_col->tupleSize(); i++) - tuple_columns.get()[i] = &const_cast(tuple_col->getColumn(i)); - - columns = tuple_columns.get(); - } + addImpl(place, tuple_col->getColumns(), row_num); + else + addImpl(place, columns, row_num); + } + template + void addImpl(AggregateDataPtr place, TColumns & columns, const size_t row_num) const + { // Column 0 contains array of keys of known type Field key_field; const ColumnArray & array_column0 = assert_cast(*columns[0]);