[Bug](avg) Fix avg for bigint (#14433)

This commit is contained in:
Gabriel
2022-11-22 10:29:59 +08:00
committed by GitHub
parent 63f4b35f95
commit 1ec7f45fb6
28 changed files with 191 additions and 466 deletions

View File

@ -55,27 +55,20 @@ struct ArrayAggregateResultImpl<Element, AggregateOperation::MAX> {
template <typename Element>
struct ArrayAggregateResultImpl<Element, AggregateOperation::AVERAGE> {
using Result =
std::conditional_t<IsDecimalV2<Element>, Decimal128,
std::conditional_t<IsDecimalNumber<Element>, Decimal128I, Float64>>;
using Result = std::conditional_t<IsDecimalNumber<Element>, Decimal128, Float64>;
};
template <typename Element>
struct ArrayAggregateResultImpl<Element, AggregateOperation::PRODUCT> {
using Result =
std::conditional_t<IsDecimalV2<Element>, Decimal128,
std::conditional_t<IsDecimalNumber<Element>, Decimal128I, Float64>>;
using Result = std::conditional_t<IsDecimalNumber<Element>, Decimal128, Float64>;
};
template <typename Element>
struct ArrayAggregateResultImpl<Element, AggregateOperation::SUM> {
using Result = std::conditional_t<
IsDecimalV2<Element>, Decimal128,
std::conditional_t<
IsDecimalNumber<Element>, Decimal128I,
std::conditional_t<
IsFloatNumber<Element>, Float64,
std::conditional_t<std::is_same_v<Element, Int128>, Int128, Int64>>>>;
IsDecimalNumber<Element>, Decimal128,
std::conditional_t<IsFloatNumber<Element>, Float64,
std::conditional_t<std::is_same_v<Element, Int128>, Int128, Int64>>>;
};
template <typename Element, AggregateOperation operation>