fix due to review

This commit is contained in:
yariks5s 2024-01-30 15:31:04 +00:00
parent 1ab29bef62
commit 0557cdb8a9

View File

@ -156,14 +156,18 @@ public:
only_integer && (IsDataTypeDecimal<LeftDataType> || IsDataTypeDecimal<RightDataType>),
Switch<
Case<
IsDataTypeDecimal<LeftDataType> || IsDataTypeDecimal<RightDataType>,
IsDataTypeDecimal<LeftDataType>,
Switch<
Case<std::is_same_v<LeftDataType, DataTypeDecimal256>, DataTypeInt256>,
Case<std::is_same_v<LeftDataType, DataTypeDecimal128>, DataTypeInt128>,
Case<std::is_same_v<LeftDataType, DataTypeDecimal64>, DataTypeInt64>,
Case<std::is_same_v<LeftDataType, DataTypeDecimal32>, DataTypeInt32>>>,
Case<
IsDataTypeDecimal<RightDataType>,
Switch<
Case<IsIntegralOrExtended<LeftDataType>, LeftDataType>,
Case<IsIntegralOrExtended<RightDataType>, RightDataType>,
Case<std::is_same_v<LeftDataType, DataTypeDecimal256> || std::is_same_v<RightDataType, DataTypeDecimal256>, DataTypeInt256>,
Case<std::is_same_v<LeftDataType, DataTypeDecimal128> || std::is_same_v<RightDataType, DataTypeDecimal128>, DataTypeInt128>,
Case<std::is_same_v<LeftDataType, DataTypeDecimal64> || std::is_same_v<RightDataType, DataTypeDecimal64>, DataTypeInt64>,
Case<std::is_same_v<LeftDataType, DataTypeDecimal32> || std::is_same_v<RightDataType, DataTypeDecimal32>, DataTypeInt32>>>>>,
Case<std::is_same_v<LeftDataType, DataTypeFloat64>, DataTypeInt64>,
Case<std::is_same_v<LeftDataType, DataTypeFloat32>, DataTypeInt32>>>>>,
/// Decimal cases
Case<!allow_decimal && (IsDataTypeDecimal<LeftDataType> || IsDataTypeDecimal<RightDataType>), InvalidType>,
@ -1684,11 +1688,11 @@ public:
{
if constexpr (is_div_int || is_div_int_or_zero)
{
if constexpr (std::is_same_v<LeftDataType, DataTypeDecimal256> || std::is_same_v<RightDataType, DataTypeDecimal256>)
if constexpr (std::is_same_v<LeftDataType, DataTypeDecimal256>)
type_res = std::make_shared<DataTypeInt256>();
else if constexpr (std::is_same_v<LeftDataType, DataTypeDecimal128> || std::is_same_v<RightDataType, DataTypeDecimal128>)
else if constexpr (std::is_same_v<LeftDataType, DataTypeDecimal128>)
type_res = std::make_shared<DataTypeInt128>();
else if constexpr (std::is_same_v<LeftDataType, DataTypeDecimal64> || std::is_same_v<RightDataType, DataTypeDecimal64>)
else if constexpr (std::is_same_v<LeftDataType, DataTypeDecimal64>)
type_res = std::make_shared<DataTypeInt64>();
else
type_res = std::make_shared<DataTypeInt32>();
@ -1723,18 +1727,14 @@ public:
type_res = std::make_shared<DataTypeInt256>();
else if constexpr (std::is_same_v<LeftDataType, DataTypeDecimal128>)
type_res = std::make_shared<DataTypeInt128>();
else if constexpr (std::is_same_v<LeftDataType, DataTypeDecimal64> || std::is_same_v<RightDataType, DataTypeFloat64>)
else if constexpr (std::is_same_v<LeftDataType, DataTypeDecimal64>)
type_res = std::make_shared<DataTypeInt64>();
else
type_res = std::make_shared<DataTypeInt32>();
}
else if constexpr (is_div_int || is_div_int_or_zero)
{
if constexpr (std::is_same_v<RightDataType, DataTypeDecimal256>)
type_res = std::make_shared<DataTypeInt256>();
else if constexpr (std::is_same_v<RightDataType, DataTypeDecimal128>)
type_res = std::make_shared<DataTypeInt128>();
else if constexpr (std::is_same_v<RightDataType, DataTypeDecimal64> || std::is_same_v<LeftDataType, DataTypeFloat64>)
if constexpr (std::is_same_v<LeftDataType, DataTypeFloat64>)
type_res = std::make_shared<DataTypeInt64>();
else
type_res = std::make_shared<DataTypeInt32>();
@ -1744,9 +1744,7 @@ public:
}
else if constexpr (IsDataTypeDecimal<LeftDataType>)
{
if constexpr ((is_div_int || is_div_int_or_zero) && IsIntegralOrExtended<RightDataType>)
type_res = std::make_shared<RightDataType>();
else if constexpr (is_div_int || is_div_int_or_zero)
if constexpr (is_div_int || is_div_int_or_zero)
{
if constexpr (std::is_same_v<LeftDataType, DataTypeDecimal256>)
type_res = std::make_shared<DataTypeInt256>();
@ -1766,11 +1764,7 @@ public:
type_res = std::make_shared<LeftDataType>();
else if constexpr (is_div_int || is_div_int_or_zero)
{
if constexpr (std::is_same_v<RightDataType, DataTypeDecimal256>)
type_res = std::make_shared<DataTypeInt256>();
else if constexpr (std::is_same_v<RightDataType, DataTypeDecimal128>)
type_res = std::make_shared<DataTypeInt128>();
else if constexpr (std::is_same_v<RightDataType, DataTypeDecimal64>)
if constexpr (std::is_same_v<LeftDataType, DataTypeFloat64>)
type_res = std::make_shared<DataTypeInt64>();
else
type_res = std::make_shared<DataTypeInt32>();