DRILL-988: trunc(num) bugfix handle data loss

Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/785aa5a2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/785aa5a2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/785aa5a2

Branch: refs/heads/master
Commit: 785aa5a254254e782d13fba562ec47ec0be7676d
Parents: 699851b
Author: Yash Sharma <[email protected]>
Authored: Thu May 29 00:29:11 2014 +0530
Committer: Jacques Nadeau <[email protected]>
Committed: Sun Jul 20 16:26:35 2014 -0700

----------------------------------------------------------------------
 exec/java-exec/src/main/codegen/data/MathFunc.tdd            | 4 ++--
 exec/java-exec/src/main/codegen/templates/MathFunctions.java | 6 ++++++
 2 files changed, 8 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/785aa5a2/exec/java-exec/src/main/codegen/data/MathFunc.tdd
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/codegen/data/MathFunc.tdd 
b/exec/java-exec/src/main/codegen/data/MathFunc.tdd
index b5b5543..cdce365 100644
--- a/exec/java-exec/src/main/codegen/data/MathFunc.tdd
+++ b/exec/java-exec/src/main/codegen/data/MathFunc.tdd
@@ -82,7 +82,7 @@ unaryMathFunctions : [
       {input: "UInt8", outputType: "UInt8", castType: "long"}
      ]
        },
-    {className: "Trunc", funcName: "trunc", javaFunc : "(long)", types: [
+    {className: "Trunc", funcName: "trunc", types: [
       {input: "Int",  outputType: "Int", castType: "int"},
       {input: "BigInt",  outputType: "BigInt", castType: "long"},
       {input: "Float4", outputType: "Float4", castType: "float"},
@@ -90,7 +90,7 @@ unaryMathFunctions : [
       {input: "SmallInt",  outputType: "SmallInt", castType: "short"},
       {input: "TinyInt",  outputType: "TinyInt", castType: "byte"},
       {input: "UInt1", outputType: "UInt1", castType: "byte"},
-      {input: "UInt2", outputType: "UInt2", castType: "char"},
+      {input: "UInt2", outputType: "UInt2", castType: "int", extraCast: 
"char"},
       {input: "UInt4", outputType: "UInt4", castType: "int"},
       {input: "UInt8", outputType: "UInt8", castType: "long"}
      ]

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/785aa5a2/exec/java-exec/src/main/codegen/templates/MathFunctions.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/codegen/templates/MathFunctions.java 
b/exec/java-exec/src/main/codegen/templates/MathFunctions.java
index c4298fb..8986b8a 100644
--- a/exec/java-exec/src/main/codegen/templates/MathFunctions.java
+++ b/exec/java-exec/src/main/codegen/templates/MathFunctions.java
@@ -67,7 +67,13 @@ public class GMathFunctions{
     }
 
     public void eval() {
+
+      <#if func.funcName=='trunc'>
+      java.math.BigDecimal bd = new 
java.math.BigDecimal(String.valueOf(in.value)).setScale(0, 
java.math.BigDecimal.ROUND_DOWN);
+      out.value = <#if type.extraCast 
??>(${type.extraCast})</#if>bd.${type.castType}Value();
+      <#else>
       out.value =(${type.castType}) ${func.javaFunc}(in.value);
+      </#if>
     }
   }
   

Reply via email to