From 95a1ee3c93fc5b7952b9361279b2b7635f9a7ae5 Mon Sep 17 00:00:00 2001 From: robot-clickhouse Date: Sat, 13 Jan 2024 03:06:07 +0000 Subject: [PATCH] Backport #58745 to 23.8: Fix double destroy call on exception throw in addBatchLookupTable8 --- src/Interpreters/Aggregator.cpp | 5 +++-- .../02963_msan_agg_addBatchLookupTable8.reference | 0 .../0_stateless/02963_msan_agg_addBatchLookupTable8.sql | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 tests/queries/0_stateless/02963_msan_agg_addBatchLookupTable8.reference create mode 100644 tests/queries/0_stateless/02963_msan_agg_addBatchLookupTable8.sql diff --git a/src/Interpreters/Aggregator.cpp b/src/Interpreters/Aggregator.cpp index 9249c3ce4ce8..cb405dabeafd 100644 --- a/src/Interpreters/Aggregator.cpp +++ b/src/Interpreters/Aggregator.cpp @@ -1164,8 +1164,9 @@ void NO_INLINE Aggregator::executeImplBatch( inst->state_offset, [&](AggregateDataPtr & aggregate_data) { - aggregate_data = aggregates_pool->alignedAlloc(total_size_of_aggregate_states, align_aggregate_states); - createAggregateStates(aggregate_data); + AggregateDataPtr place = aggregates_pool->alignedAlloc(total_size_of_aggregate_states, align_aggregate_states); + createAggregateStates(place); + aggregate_data = place; }, state.getKeyData(), inst->batch_arguments, diff --git a/tests/queries/0_stateless/02963_msan_agg_addBatchLookupTable8.reference b/tests/queries/0_stateless/02963_msan_agg_addBatchLookupTable8.reference new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/tests/queries/0_stateless/02963_msan_agg_addBatchLookupTable8.sql b/tests/queries/0_stateless/02963_msan_agg_addBatchLookupTable8.sql new file mode 100644 index 000000000000..a3a8bd0624a5 --- /dev/null +++ b/tests/queries/0_stateless/02963_msan_agg_addBatchLookupTable8.sql @@ -0,0 +1,2 @@ +-- https://github.com/ClickHouse/ClickHouse/issues/58727 +SELECT number % 2 AS even, aggThrow(number) FROM numbers(10) GROUP BY even; -- { serverError AGGREGATE_FUNCTION_THROW}