From d0f8e2d0638186bd3ccf1b1105f9ec85898f342c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Mar=C3=ADn?= Date: Mon, 30 Aug 2021 11:42:02 +0200 Subject: [PATCH] Remove memcpy and use the heap --- src/AggregateFunctions/AggregateFunctionSum.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/AggregateFunctions/AggregateFunctionSum.h b/src/AggregateFunctions/AggregateFunctionSum.h index 7dd5c0eee8e..2783f2cd43e 100644 --- a/src/AggregateFunctions/AggregateFunctionSum.h +++ b/src/AggregateFunctions/AggregateFunctionSum.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include @@ -400,12 +401,12 @@ public: if (if_argument_pos >= 0) { /// Merge the 2 sets of flags (null and if) into a single one. This allows us to use parallelizable sums when available - UInt8 final_flags[batch_size]; - memcpy(final_flags, assert_cast(*columns[if_argument_pos]).getData().data(), batch_size * sizeof(UInt8)); + const auto * if_flags = assert_cast(*columns[if_argument_pos]).getData().data(); + auto final_flags = std::make_unique(batch_size); for (size_t i = 0; i < batch_size; ++i) - final_flags[i] = !null_map[i] && final_flags[i]; + final_flags[i] = !null_map[i] && if_flags[i]; - this->data(place).addManyConditional(column.getData().data(), final_flags, batch_size); + this->data(place).addManyConditional(column.getData().data(), final_flags.get(), batch_size); } else {