@@ -72,6 +72,8 @@ void InlineCountAggContext::emplace_into_hash_table(AggregateDataPtr* /*places*/
7272// ==================== Aggregation execution ====================
7373
7474Status InlineCountAggContext::execute_with_serialized_key (Block* block) {
75+ memory_usage_last_executing = 0 ;
76+ SCOPED_PEAK_MEM (&memory_usage_last_executing);
7577 SCOPED_TIMER (_build_timer);
7678 DCHECK (!block->empty ());
7779
@@ -164,7 +166,7 @@ Status InlineCountAggContext::get_serialized_results(RuntimeState* state, Block*
164166 size_t key_size = _groupby_expr_ctxs.size ();
165167 DCHECK_EQ (_agg_evaluators.size (), 1 );
166168
167- bool mem_reuse = block->mem_reuse ();
169+ bool mem_reuse = make_nullable_keys. empty () && block->mem_reuse ();
168170
169171 auto key_columns = agg_context_utils::take_or_create_columns (
170172 block, mem_reuse, 0 , key_size,
@@ -199,7 +201,7 @@ Status InlineCountAggContext::get_serialized_results(RuntimeState* state, Block*
199201 while (it != agg_method.end && num_rows < state->batch_size ()) {
200202 keys[num_rows] = it.get_first ();
201203 auto inline_count =
202- reinterpret_cast < const UInt64& >(it.get_second ());
204+ std::bit_cast< UInt64>(it.get_second ());
203205 count_col.insert_data (
204206 reinterpret_cast <const char *>(&inline_count),
205207 sizeof (UInt64));
@@ -224,7 +226,7 @@ Status InlineCountAggContext::get_serialized_results(RuntimeState* state, Block*
224226 agg_method.hash_table ->template get_null_key_data <
225227 AggregateDataPtr>();
226228 auto inline_count =
227- reinterpret_cast < const UInt64& >(mapped);
229+ std::bit_cast< UInt64>(mapped);
228230 count_col.insert_data (
229231 reinterpret_cast <const char *>(&inline_count),
230232 sizeof (UInt64));
@@ -251,7 +253,7 @@ Status InlineCountAggContext::get_serialized_results(RuntimeState* state, Block*
251253Status InlineCountAggContext::get_finalized_results (
252254 RuntimeState* state, Block* block, bool * eos,
253255 const ColumnsWithTypeAndName& columns_with_schema) {
254- bool mem_reuse = block->mem_reuse ();
256+ bool mem_reuse = make_nullable_keys. empty () && block->mem_reuse ();
255257
256258 size_t key_size = _groupby_expr_ctxs.size ();
257259
@@ -288,7 +290,7 @@ Status InlineCountAggContext::get_finalized_results(
288290 keys[num_rows] = it.get_first ();
289291 auto & mapped = it.get_second ();
290292 count_column.insert_value (static_cast <Int64>(
291- reinterpret_cast < const UInt64& >(mapped)));
293+ std::bit_cast< UInt64>(mapped)));
292294 ++it;
293295 ++num_rows;
294296 }
0 commit comments