[Bug] fix decimal arithmetic calculations (#10963)

This commit is contained in:
Gabriel
2022-07-18 14:35:07 +08:00
committed by GitHub
parent 8c544b6e13
commit 238395e282

View File

@ -745,14 +745,11 @@ private:
OpTraits::is_division);
typename ResultDataType::FieldType scale_a;
typename ResultDataType::FieldType scale_b;
if constexpr (OpTraits::is_division && IsDataTypeDecimal<RightDataType>) {
scale_a = type_right.get_scale_multiplier();
scale_b = 1;
} else {
scale_a = type.scale_factor_for(type_left, OpTraits::is_multiply);
scale_b = type.scale_factor_for(type_right,
OpTraits::is_multiply || OpTraits::is_division);
}
// TODO(Gabriel): precision and scale need to be processed for decimalv3, now we just
// keep the same behavior as before
scale_a = type.scale_factor_for(type_left, OpTraits::is_multiply);
scale_b = type.scale_factor_for(type_right, OpTraits::is_multiply || OpTraits::is_division);
return std::make_tuple(type, scale_a, scale_b);
}