[Enchancement](function) refact and optimize some function register (#16955)
refact and optimize some function register
This commit is contained in:
@ -49,30 +49,30 @@ public:
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
AggregateFunctionPtr res;
|
||||
if (arguments.size() == 1) {
|
||||
res.reset(create_with_numeric_type<AggregateFunctionDistinct,
|
||||
AggregateFunctionDistinctSingleNumericData>(
|
||||
*arguments[0], nested_function, arguments));
|
||||
|
||||
AggregateFunctionPtr res(
|
||||
creator_with_numeric_type::create<AggregateFunctionDistinct,
|
||||
AggregateFunctionDistinctSingleNumericData>(
|
||||
result_is_nullable, arguments, nested_function));
|
||||
if (res) {
|
||||
return res;
|
||||
}
|
||||
|
||||
if (arguments[0]->is_value_unambiguously_represented_in_contiguous_memory_region()) {
|
||||
return std::make_shared<AggregateFunctionDistinct<
|
||||
AggregateFunctionDistinctSingleGenericData<true>>>(nested_function,
|
||||
arguments);
|
||||
res.reset(creator_without_type::create<AggregateFunctionDistinct<
|
||||
AggregateFunctionDistinctSingleGenericData<true>>>(
|
||||
result_is_nullable, arguments, nested_function));
|
||||
} else {
|
||||
return std::make_shared<AggregateFunctionDistinct<
|
||||
AggregateFunctionDistinctSingleGenericData<false>>>(nested_function,
|
||||
arguments);
|
||||
res.reset(creator_without_type::create<AggregateFunctionDistinct<
|
||||
AggregateFunctionDistinctSingleGenericData<false>>>(
|
||||
result_is_nullable, arguments, nested_function));
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
return std::make_shared<
|
||||
AggregateFunctionDistinct<AggregateFunctionDistinctMultipleGenericData>>(
|
||||
nested_function, arguments);
|
||||
return AggregateFunctionPtr(
|
||||
creator_without_type::create<
|
||||
AggregateFunctionDistinct<AggregateFunctionDistinctMultipleGenericData>>(
|
||||
result_is_nullable, arguments, nested_function));
|
||||
}
|
||||
};
|
||||
|
||||
@ -93,5 +93,6 @@ void register_aggregate_function_combinator_distinct(AggregateFunctionSimpleFact
|
||||
result_is_nullable);
|
||||
};
|
||||
factory.register_distinct_function_combinator(creator, DISTINCT_FUNCTION_PREFIX);
|
||||
factory.register_distinct_function_combinator(creator, DISTINCT_FUNCTION_PREFIX, true);
|
||||
}
|
||||
} // namespace doris::vectorized
|
||||
|
||||
Reference in New Issue
Block a user