[Enchancement](function) refact and optimize some function register (#16955)

refact and optimize some function register
This commit is contained in:
Pxl
2023-02-24 10:05:11 +08:00
committed by GitHub
parent 37b9b038c4
commit c4edea5936
18 changed files with 370 additions and 343 deletions

View File

@ -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