Remove one template

This commit is contained in:
Raúl Marín 2024-03-11 15:53:46 +01:00
parent 9bada70f45
commit 8b5ccb4735
2 changed files with 28 additions and 41 deletions

View File

@ -2609,8 +2609,9 @@ void NO_INLINE Aggregator::mergeDataNullKey(
} }
} }
template <typename Method, bool use_compiled_functions, bool prefetch, typename Table> template <typename Method, bool prefetch, typename Table>
void NO_INLINE Aggregator::mergeDataImpl(Table & table_dst, Table & table_src, Arena * arena) const void NO_INLINE
Aggregator::mergeDataImpl(Table & table_dst, Table & table_src, Arena * arena, bool use_compiled_functions [[maybe_unused]]) const
{ {
if constexpr (Method::low_cardinality_optimization || Method::one_key_nullable_optimization) if constexpr (Method::low_cardinality_optimization || Method::one_key_nullable_optimization)
mergeDataNullKey<Method, Table>(table_dst, table_src, arena); mergeDataNullKey<Method, Table>(table_dst, table_src, arena);
@ -2637,7 +2638,7 @@ void NO_INLINE Aggregator::mergeDataImpl(Table & table_dst, Table & table_src, A
table_src.clearAndShrink(); table_src.clearAndShrink();
#if USE_EMBEDDED_COMPILER #if USE_EMBEDDED_COMPILER
if constexpr (use_compiled_functions) if (use_compiled_functions)
{ {
const auto & compiled_functions = compiled_aggregate_functions_holder->compiled_aggregate_functions; const auto & compiled_functions = compiled_aggregate_functions_holder->compiled_aggregate_functions;
compiled_functions.merge_aggregate_states_function(dst_places.data(), src_places.data(), dst_places.size()); compiled_functions.merge_aggregate_states_function(dst_places.data(), src_places.data(), dst_places.size());
@ -2787,26 +2788,16 @@ void NO_INLINE Aggregator::mergeSingleLevelDataImpl(
if (!no_more_keys) if (!no_more_keys)
{ {
bool use_compiled_functions = false;
#if USE_EMBEDDED_COMPILER #if USE_EMBEDDED_COMPILER
if (compiled_aggregate_functions_holder) use_compiled_functions = compiled_aggregate_functions_holder != nullptr;
{
if (prefetch)
mergeDataImpl<Method, true, true>(
getDataVariant<Method>(*res).data, getDataVariant<Method>(current).data, res->aggregates_pool);
else
mergeDataImpl<Method, true, false>(
getDataVariant<Method>(*res).data, getDataVariant<Method>(current).data, res->aggregates_pool);
}
else
#endif #endif
{ if (prefetch)
if (prefetch) mergeDataImpl<Method, true>(
mergeDataImpl<Method, false, true>( getDataVariant<Method>(*res).data, getDataVariant<Method>(current).data, res->aggregates_pool, use_compiled_functions);
getDataVariant<Method>(*res).data, getDataVariant<Method>(current).data, res->aggregates_pool); else
else mergeDataImpl<Method, false>(
mergeDataImpl<Method, false, false>( getDataVariant<Method>(*res).data, getDataVariant<Method>(current).data, res->aggregates_pool, use_compiled_functions);
getDataVariant<Method>(*res).data, getDataVariant<Method>(current).data, res->aggregates_pool);
}
} }
else if (res->without_key) else if (res->without_key)
{ {
@ -2851,26 +2842,22 @@ void NO_INLINE Aggregator::mergeBucketImpl(
return; return;
AggregatedDataVariants & current = *data[result_num]; AggregatedDataVariants & current = *data[result_num];
bool use_compiled_functions = false;
#if USE_EMBEDDED_COMPILER #if USE_EMBEDDED_COMPILER
if (compiled_aggregate_functions_holder) use_compiled_functions = compiled_aggregate_functions_holder != nullptr;
{
if (prefetch)
mergeDataImpl<Method, true, true>(
getDataVariant<Method>(*res).data.impls[bucket], getDataVariant<Method>(current).data.impls[bucket], arena);
else
mergeDataImpl<Method, true, false>(
getDataVariant<Method>(*res).data.impls[bucket], getDataVariant<Method>(current).data.impls[bucket], arena);
}
else
#endif #endif
{ if (prefetch)
if (prefetch) mergeDataImpl<Method, true>(
mergeDataImpl<Method, false, true>( getDataVariant<Method>(*res).data.impls[bucket],
getDataVariant<Method>(*res).data.impls[bucket], getDataVariant<Method>(current).data.impls[bucket], arena); getDataVariant<Method>(current).data.impls[bucket],
else arena,
mergeDataImpl<Method, false, false>( use_compiled_functions);
getDataVariant<Method>(*res).data.impls[bucket], getDataVariant<Method>(current).data.impls[bucket], arena); else
} mergeDataImpl<Method, false>(
getDataVariant<Method>(*res).data.impls[bucket],
getDataVariant<Method>(current).data.impls[bucket],
arena,
use_compiled_functions);
} }
} }

View File

@ -1429,8 +1429,8 @@ private:
Arena * arena) const; Arena * arena) const;
/// Merge data from hash table `src` into `dst`. /// Merge data from hash table `src` into `dst`.
template <typename Method, bool use_compiled_functions, bool prefetch, typename Table> template <typename Method, bool prefetch, typename Table>
void mergeDataImpl(Table & table_dst, Table & table_src, Arena * arena) const; void mergeDataImpl(Table & table_dst, Table & table_src, Arena * arena, bool use_compiled_functions) const;
/// Merge data from hash table `src` into `dst`, but only for keys that already exist in dst. In other cases, merge the data into `overflows`. /// Merge data from hash table `src` into `dst`, but only for keys that already exist in dst. In other cases, merge the data into `overflows`.
template <typename Method, typename Table> template <typename Method, typename Table>