From dbc0a0e4ff3adae090afab134a500a41a86e8c3d Mon Sep 17 00:00:00 2001 From: 2149 <260391947@qq.com> Date: Tue, 21 Nov 2023 09:11:03 +0000 Subject: [PATCH] fix lossless cast bug --- src/sql/optimizer/ob_optimizer_util.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/sql/optimizer/ob_optimizer_util.cpp b/src/sql/optimizer/ob_optimizer_util.cpp index 2539c3ab97..935d8be842 100644 --- a/src/sql/optimizer/ob_optimizer_util.cpp +++ b/src/sql/optimizer/ob_optimizer_util.cpp @@ -5906,6 +5906,9 @@ bool ObOptimizerUtil::is_lossless_type_conv(const ObExprResType &child_type, con is_lossless = (dst_type.get_scale() >= child_type.get_scale() && dst_type.get_precision() >= child_type.get_precision()); } + } else if (ObNumberTC == dst_tc) { + is_lossless = NUMBER_SCALE_UNKNOWN_YET == dst_type.get_scale() + && PRECISION_UNKNOWN_YET == dst_type.get_precision(); } } } @@ -6052,6 +6055,9 @@ int ObOptimizerUtil::is_lossless_column_cast(const ObRawExpr *expr, bool &is_los is_lossless = (dst_type.get_scale() >= child_type.get_scale() && dst_type.get_precision() >= child_type.get_precision()); } + } else if (ObNumberTC == dst_tc) { + is_lossless = NUMBER_SCALE_UNKNOWN_YET == dst_type.get_scale() + && PRECISION_UNKNOWN_YET == dst_type.get_precision(); } } }