You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@drill.apache.org by ja...@apache.org on 2014/05/20 05:01:53 UTC
[05/14] git commit: DRILL-770: Fix decimal math functions with
constants
DRILL-770: Fix decimal math functions with constants
Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/62c0b1ba
Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/62c0b1ba
Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/62c0b1ba
Branch: refs/heads/master
Commit: 62c0b1ba384fd2b3c7a9af12ed75341a4294f331
Parents: 5a78ff8
Author: Mehant Baid <me...@gmail.com>
Authored: Sun May 18 18:31:57 2014 -0700
Committer: Mehant Baid <me...@gmail.com>
Committed: Mon May 19 10:43:26 2014 -0700
----------------------------------------------------------------------
.../codegen/templates/Decimal/DecimalFunctions.java | 2 ++
.../apache/drill/exec/resolver/TypeCastRules.java | 6 ------
.../apache/drill/jdbc/test/TestFunctionsQuery.java | 15 +++++++++++++++
3 files changed, 17 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/62c0b1ba/exec/java-exec/src/main/codegen/templates/Decimal/DecimalFunctions.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/codegen/templates/Decimal/DecimalFunctions.java b/exec/java-exec/src/main/codegen/templates/Decimal/DecimalFunctions.java
index 8f14e83..cff122e 100644
--- a/exec/java-exec/src/main/codegen/templates/Decimal/DecimalFunctions.java
+++ b/exec/java-exec/src/main/codegen/templates/Decimal/DecimalFunctions.java
@@ -237,8 +237,10 @@ import org.apache.drill.exec.expr.annotations.Workspace;
if (left.scale < right.scale) {
left.value = (${javaType}) (left.value * Math.pow(10, (right.scale - left.scale)));
+ left.scale = right.scale;
} else if (right.scale < left.scale) {
right.value = (${javaType}) (right.value * Math.pow(10, (left.scale - right.scale)));
+ right.scale = left.scale;
}
</#macro>
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/62c0b1ba/exec/java-exec/src/main/java/org/apache/drill/exec/resolver/TypeCastRules.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/resolver/TypeCastRules.java b/exec/java-exec/src/main/java/org/apache/drill/exec/resolver/TypeCastRules.java
index 515843d..2f6bf38 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/resolver/TypeCastRules.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/resolver/TypeCastRules.java
@@ -420,12 +420,6 @@ public class TypeCastRules {
rule.add(MinorType.UINT2);
rule.add(MinorType.UINT4);
rule.add(MinorType.UINT8);
- rule.add(MinorType.DECIMAL9);
- rule.add(MinorType.DECIMAL18);
- rule.add(MinorType.DECIMAL28SPARSE);
- rule.add(MinorType.DECIMAL28DENSE);
- rule.add(MinorType.DECIMAL38SPARSE);
- rule.add(MinorType.DECIMAL38DENSE);
rule.add(MinorType.DATE);
rule.add(MinorType.TIME);
rule.add(MinorType.TIMESTAMPTZ);
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/62c0b1ba/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestFunctionsQuery.java
----------------------------------------------------------------------
diff --git a/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestFunctionsQuery.java b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestFunctionsQuery.java
index 05884e5..66ae477 100644
--- a/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestFunctionsQuery.java
+++ b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestFunctionsQuery.java
@@ -452,4 +452,19 @@ public class TestFunctionsQuery {
"CNT=1.000\n" +
"CNT=3.000\n");
}
+
+ @Test
+ public void testDecimalAddIntConstant() throws Exception {
+ String query = "select 1 + cast(employee_id as decimal(9, 3)) as DEC_9 , 1 + cast(employee_id as decimal(38, 5)) as DEC_38 " +
+ "from cp.`employee.json` where employee_id <= 2";
+
+ JdbcAssert.withNoDefaultSchema()
+ .sql(query)
+ .returns(
+ "DEC_9=2.000; " +
+ "DEC_38=2.00000\n" +
+ "DEC_9=3.000; " +
+ "DEC_38=3.00000\n");
+ }
+
}