Fix double type lossless cast check

This commit is contained in:
hezuojiao
2023-03-14 09:43:50 +00:00
committed by ob-robot
parent f4ed181811
commit 9b6784e77c

View File

@ -5656,10 +5656,8 @@ int ret = OB_SUCCESS;
} else if (ObFloatTC == child_tc || ObDoubleTC == child_tc) { } else if (ObFloatTC == child_tc || ObDoubleTC == child_tc) {
if (child_tc == dst_tc || ObDoubleTC == dst_tc) { if (child_tc == dst_tc || ObDoubleTC == dst_tc) {
ObAccuracy lossless_acc = child_type.get_accuracy(); ObAccuracy lossless_acc = child_type.get_accuracy();
if (-1 == dst_acc.get_precision() && -1 == dst_acc.get_scale()) { if (dst_acc.get_precision() >= lossless_acc.get_precision() &&
is_lossless = true; dst_acc.get_scale() == lossless_acc.get_scale()) {
} else if (dst_acc.get_precision() >= lossless_acc.get_precision() &&
dst_acc.get_scale() >= lossless_acc.get_scale()) {
is_lossless = true; is_lossless = true;
} }
} }
@ -5764,7 +5762,8 @@ int ObOptimizerUtil::is_lossless_column_cast(const ObRawExpr *expr, bool &is_los
} }
} else if (ObFloatTC == child_tc || ObDoubleTC == child_tc) { } else if (ObFloatTC == child_tc || ObDoubleTC == child_tc) {
if (child_tc == dst_tc || ObDoubleTC == dst_tc) { if (child_tc == dst_tc || ObDoubleTC == dst_tc) {
if (-1 == dst_acc.get_precision() && -1 == dst_acc.get_scale()) { ObAccuracy lossless_acc = child_type.get_accuracy();
if (lossless_acc.get_scale() == dst_acc.get_scale()) {
is_lossless = true; is_lossless = true;
} }
} }