From 67b1a08ed1cd08c8648ac688b3fae9aea8fadbc0 Mon Sep 17 00:00:00 2001 From: zhouhuahui <39624796+zhouhuahui@users.noreply.github.com> Date: Tue, 14 Dec 2021 15:16:28 +0800 Subject: [PATCH] Update ob_expr_remainder.cpp (#693) resolve issue#618 --- src/sql/engine/expr/ob_expr_remainder.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/sql/engine/expr/ob_expr_remainder.cpp b/src/sql/engine/expr/ob_expr_remainder.cpp index 616a9e7bbf..a11682df13 100644 --- a/src/sql/engine/expr/ob_expr_remainder.cpp +++ b/src/sql/engine/expr/ob_expr_remainder.cpp @@ -281,14 +281,14 @@ int ObExprRemainder::calc_remainder_expr(const ObExpr& expr, ObEvalCtx& ctx, ObD } } } else if (ObFloatTC == tc) { - if (0 == right->get_float()) { + if ((right->get_float() < 1e-6 && right->get_float() >= 0.0) || (right->get_float() > -(1e-6) && right->get_float() <= 0.0)) { ret = OB_ERR_DIVISOR_IS_ZERO; LOG_WARN("divisor is equal to zero on oracle mode", K(ret), K(right->get_float())); } else { res.set_float(remainder(left->get_float(), right->get_float())); } } else if (ObDoubleTC == tc) { - if (0 == right->get_double()) { + if ((right->get_double() < 1e-15 && right->get_double() >= 0.0) || (right->get_double() > -(1e-15) && right->get_double() <= 0.0)) { ret = OB_ERR_DIVISOR_IS_ZERO; LOG_WARN("divisor is equal to zero on oracle mode", K(ret), K(right->get_double())); } else { -- GitLab