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/04/20 03:18:22 UTC
[14/51] [abbrv] git commit: Build the IfExpression correcty in
ExpressionStringBuilder Use IntExpression instead of LongExpression for
integers
Build the IfExpression correcty in ExpressionStringBuilder
Use IntExpression instead of LongExpression for integers
Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/db0ff636
Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/db0ff636
Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/db0ff636
Branch: refs/heads/master
Commit: db0ff6364ee3ff27f6fe4a9a506617ee47c88ae5
Parents: 6976f92
Author: Mehant Baid <me...@gmail.com>
Authored: Mon Mar 31 20:41:06 2014 -0700
Committer: Jacques Nadeau <ja...@apache.org>
Committed: Sat Apr 19 18:07:09 2014 -0700
----------------------------------------------------------------------
.../expression/ExpressionStringBuilder.java | 3 +++
.../common/expression/ValueExpressions.java | 8 ++++++-
.../sig/ConstantExpressionIdentifier.java | 1 -
.../drill/exec/expr/EvaluationVisitor.java | 25 +++++++++++++++++++-
.../drill/exec/fn/impl/TestMathFunctions.java | 5 ++--
5 files changed, 37 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/db0ff636/common/src/main/java/org/apache/drill/common/expression/ExpressionStringBuilder.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/expression/ExpressionStringBuilder.java b/common/src/main/java/org/apache/drill/common/expression/ExpressionStringBuilder.java
index 4bbc09a..16b3f4d 100644
--- a/common/src/main/java/org/apache/drill/common/expression/ExpressionStringBuilder.java
+++ b/common/src/main/java/org/apache/drill/common/expression/ExpressionStringBuilder.java
@@ -75,6 +75,9 @@ public class ExpressionStringBuilder extends AbstractExprVisitor<Void, StringBui
c.expression.accept(this, sb);
sb.append(" ) ");
}
+ sb.append(" else (");
+ ifExpr.elseExpression.accept(this, sb);
+ sb.append(" ) ");
sb.append(" end ");
sb.append(" ) ");
return null;
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/db0ff636/common/src/main/java/org/apache/drill/common/expression/ValueExpressions.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/expression/ValueExpressions.java b/common/src/main/java/org/apache/drill/common/expression/ValueExpressions.java
index 10cf152..4b83e7d 100644
--- a/common/src/main/java/org/apache/drill/common/expression/ValueExpressions.java
+++ b/common/src/main/java/org/apache/drill/common/expression/ValueExpressions.java
@@ -35,7 +35,7 @@ public class ValueExpressions {
}
public static LogicalExpression getInt(int i){
- return new LongExpression(i);
+ return new IntExpression(i, ExpressionPosition.UNKNOWN);
}
public static LogicalExpression getFloat8(double d){
@@ -76,6 +76,12 @@ public class ValueExpressions {
public static LogicalExpression getNumericExpression(String s, ExpressionPosition ep) {
try {
+ int a = Integer.parseInt(s);
+ return new IntExpression(a, ep);
+ } catch (Exception e) {
+
+ }
+ try {
long l = Long.parseLong(s);
return new LongExpression(l, ep);
} catch (Exception e) {
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/db0ff636/exec/java-exec/src/main/java/org/apache/drill/exec/compile/sig/ConstantExpressionIdentifier.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/compile/sig/ConstantExpressionIdentifier.java b/exec/java-exec/src/main/java/org/apache/drill/exec/compile/sig/ConstantExpressionIdentifier.java
index b9a9ae2..2a87bab 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/compile/sig/ConstantExpressionIdentifier.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/compile/sig/ConstantExpressionIdentifier.java
@@ -114,7 +114,6 @@ public class ConstantExpressionIdentifier implements ExprVisitor<Boolean, Identi
@Override
public Boolean visitIntConstant(ValueExpressions.IntExpression intExpr, IdentityHashMap<LogicalExpression, Object> value) throws RuntimeException {
- value.put(intExpr, true);
return true;
}
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/db0ff636/exec/java-exec/src/main/java/org/apache/drill/exec/expr/EvaluationVisitor.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/EvaluationVisitor.java b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/EvaluationVisitor.java
index ac536e4..b7670ee 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/EvaluationVisitor.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/EvaluationVisitor.java
@@ -32,6 +32,7 @@ import org.apache.drill.common.expression.ValueExpressions;
import org.apache.drill.common.expression.ValueExpressions.BooleanExpression;
import org.apache.drill.common.expression.ValueExpressions.DoubleExpression;
import org.apache.drill.common.expression.ValueExpressions.LongExpression;
+import org.apache.drill.common.expression.ValueExpressions.IntExpression;
import org.apache.drill.common.expression.ValueExpressions.DateExpression;
import org.apache.drill.common.expression.ValueExpressions.IntervalYearExpression;
import org.apache.drill.common.expression.ValueExpressions.IntervalDayExpression;
@@ -140,7 +141,7 @@ public class EvaluationVisitor {
if (HoldingContainer.isOptional()) {
jc = conditionalBlock._if(HoldingContainer.getIsSet().cand(HoldingContainer.getValue()));
} else {
- jc = conditionalBlock._if(HoldingContainer.getValue());
+ jc = conditionalBlock._if(HoldingContainer.getValue().eq(JExpr.lit(1)));
}
} else {
if (HoldingContainer.isOptional()) {
@@ -190,6 +191,13 @@ public class EvaluationVisitor {
}
@Override
+ public HoldingContainer visitIntConstant(IntExpression e, ClassGenerator<?> generator) throws RuntimeException {
+ HoldingContainer out = generator.declare(e.getMajorType());
+ generator.getEvalBlock().assign(out.getValue(), JExpr.lit(e.getInt()));
+ return out;
+ }
+
+ @Override
public HoldingContainer visitDateConstant(DateExpression e, ClassGenerator<?> generator) throws RuntimeException {
HoldingContainer out = generator.declare(e.getMajorType());
generator.getEvalBlock().assign(out.getValue(), JExpr.lit(e.getDate()));
@@ -461,6 +469,21 @@ public class EvaluationVisitor {
}
@Override
+ public HoldingContainer visitIntConstant(IntExpression e, ClassGenerator<?> generator) throws RuntimeException {
+ if (constantBoundaries.contains(e)) {
+ generator.getMappingSet().enterConstant();
+ HoldingContainer c = super.visitIntConstant(e, generator);
+ //generator.getMappingSet().exitConstant();
+ //return c;
+ return renderConstantExpression(generator, c);
+ } else if (generator.getMappingSet().isWithinConstant()) {
+ return super.visitIntConstant(e, generator).setConstant(true);
+ } else {
+ return super.visitIntConstant(e, generator);
+ }
+ }
+
+ @Override
public HoldingContainer visitDateConstant(DateExpression e, ClassGenerator<?> generator) throws RuntimeException {
if (constantBoundaries.contains(e)) {
generator.getMappingSet().enterConstant();
http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/db0ff636/exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestMathFunctions.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestMathFunctions.java b/exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestMathFunctions.java
index cc90f13..a23b31c 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestMathFunctions.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/fn/impl/TestMathFunctions.java
@@ -44,6 +44,7 @@ import org.apache.drill.exec.proto.ExecProtos.FragmentHandle;
import org.apache.drill.exec.rpc.user.UserServer.UserClientConnection;
import org.apache.drill.exec.server.DrillbitContext;
import org.apache.drill.exec.vector.BigIntVector;
+import org.apache.drill.exec.vector.IntVector;
import org.apache.drill.exec.vector.Float8Vector;
import org.junit.Test;
@@ -77,9 +78,9 @@ public class TestMathFunctions {
SimpleRootExec exec = new SimpleRootExec(ImplCreator.getExec(context, (FragmentRoot) plan.getSortedOperators(false).iterator().next()));
while(exec.next()) {
- BigIntVector intMulVector = exec.getValueVectorById(new SchemaPath("INTMUL", ExpressionPosition.UNKNOWN), BigIntVector.class);
+ IntVector intMulVector = exec.getValueVectorById(new SchemaPath("INTMUL", ExpressionPosition.UNKNOWN), IntVector.class);
Float8Vector floatMulVector = exec.getValueVectorById(new SchemaPath("FLOATMUL", ExpressionPosition.UNKNOWN), Float8Vector.class);
- BigIntVector intAddVector = exec.getValueVectorById(new SchemaPath("INTADD", ExpressionPosition.UNKNOWN), BigIntVector.class);
+ IntVector intAddVector = exec.getValueVectorById(new SchemaPath("INTADD", ExpressionPosition.UNKNOWN), IntVector.class);
Float8Vector floatAddVector = exec.getValueVectorById(new SchemaPath("FLOATADD", ExpressionPosition.UNKNOWN), Float8Vector.class);
assertEquals(exec.getRecordCount(), 1);
assertEquals(intMulVector.getAccessor().get(0), 2);