From 6fbfef62b58f87787a51d670cd0f7824e4ab7cb0 Mon Sep 17 00:00:00 2001 From: wenshao Date: Sun, 22 Jan 2017 21:23:30 +0800 Subject: [PATCH] bug fixed for mod function eval. issue #1588 --- .../druid/sql/visitor/SQLEvalVisitorUtils.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/alibaba/druid/sql/visitor/SQLEvalVisitorUtils.java b/src/main/java/com/alibaba/druid/sql/visitor/SQLEvalVisitorUtils.java index 74871e6bee..e3600f7248 100644 --- a/src/main/java/com/alibaba/druid/sql/visitor/SQLEvalVisitorUtils.java +++ b/src/main/java/com/alibaba/druid/sql/visitor/SQLEvalVisitorUtils.java @@ -260,12 +260,16 @@ public class SQLEvalVisitorUtils { return false; } - int intValue0 = castToInteger(param0Value); - int intValue1 = castToInteger(param1Value); + long intValue0 = castToLong(param0Value); + long intValue1 = castToLong(param1Value); - int result = intValue0 % intValue1; - - x.putAttribute(EVAL_VALUE, result); + long result = intValue0 % intValue1; + if (result >= Integer.MIN_VALUE && result <= Integer.MAX_VALUE) { + int intResult = (int) result; + x.putAttribute(EVAL_VALUE, intResult); + } else { + x.putAttribute(EVAL_VALUE, result); + } } else if ("abs".equals(methodName)) { if (x.getParameters().size() != 1) { return false;