You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by jn...@apache.org on 2015/02/20 20:03:32 UTC
[2/2] drill git commit: DRILL-2269: Add default implementation for
estimating cost of evaluating an expression, in stead of throwing Exception.
DRILL-2269: Add default implementation for estimating cost of evaluating an expression, in stead of throwing Exception.
Set default cost of evaluating a HiveFuncHolder expression.
Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/b5c1ffec
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/b5c1ffec
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/b5c1ffec
Branch: refs/heads/master
Commit: b5c1ffec5e90b8a1def58887272af2e2473e7500
Parents: 1ceddff
Author: Jinfeng Ni <jn...@maprtech.com>
Authored: Wed Feb 18 13:57:12 2015 -0800
Committer: Jinfeng Ni <jn...@maprtech.com>
Committed: Thu Feb 19 18:52:27 2015 -0800
----------------------------------------------------------------------
.../common/expression/BooleanOperator.java | 7 +-
.../drill/common/expression/IfExpression.java | 7 +-
.../expression/LogicalExpressionBase.java | 12 +-
.../common/expression/TypedNullConstant.java | 10 --
.../common/expression/ValueExpressions.java | 144 -------------------
.../drill/exec/expr/HiveFuncHolderExpr.java | 6 +
6 files changed, 17 insertions(+), 169 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/drill/blob/b5c1ffec/common/src/main/java/org/apache/drill/common/expression/BooleanOperator.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/expression/BooleanOperator.java b/common/src/main/java/org/apache/drill/common/expression/BooleanOperator.java
index e00ced5..809d3e2 100644
--- a/common/src/main/java/org/apache/drill/common/expression/BooleanOperator.java
+++ b/common/src/main/java/org/apache/drill/common/expression/BooleanOperator.java
@@ -50,14 +50,9 @@ public class BooleanOperator extends FunctionCall{
}
@Override
- public int getSelfCost() {
- return 0; // TODO
- }
-
- @Override
public int getCumulativeCost() {
// return the average cost of operands for a boolean "and" | "or"
- int cost = 0;
+ int cost = this.getSelfCost();
int i = 0;
for (LogicalExpression e : this) {
http://git-wip-us.apache.org/repos/asf/drill/blob/b5c1ffec/common/src/main/java/org/apache/drill/common/expression/IfExpression.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/expression/IfExpression.java b/common/src/main/java/org/apache/drill/common/expression/IfExpression.java
index a1cbbd7..c0306ce 100644
--- a/common/src/main/java/org/apache/drill/common/expression/IfExpression.java
+++ b/common/src/main/java/org/apache/drill/common/expression/IfExpression.java
@@ -120,14 +120,9 @@ public class IfExpression extends LogicalExpressionBase {
}
@Override
- public int getSelfCost() {
- return 0; // TODO
- }
-
- @Override
public int getCumulativeCost() {
// return the average cost of operands for a boolean "and" | "or"
- int cost = 0;
+ int cost = this.getSelfCost();
int i = 0;
for (LogicalExpression e : this) {
http://git-wip-us.apache.org/repos/asf/drill/blob/b5c1ffec/common/src/main/java/org/apache/drill/common/expression/LogicalExpressionBase.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/expression/LogicalExpressionBase.java b/common/src/main/java/org/apache/drill/common/expression/LogicalExpressionBase.java
index c125357..b8c5b0f 100644
--- a/common/src/main/java/org/apache/drill/common/expression/LogicalExpressionBase.java
+++ b/common/src/main/java/org/apache/drill/common/expression/LogicalExpressionBase.java
@@ -57,12 +57,18 @@ public abstract class LogicalExpressionBase implements LogicalExpression {
@JsonIgnore
public int getSelfCost() {
- throw new UnsupportedOperationException(String.format("The type of %s doesn't currently support LogicalExpression.getSelfCost().", this.getClass().getCanonicalName()));
+ return 0;
}
@JsonIgnore
- public int getCumulativeCost() {
- throw new UnsupportedOperationException(String.format("The type of %s doesn't currently support LogicalExpression.getCumulativeCost().", this.getClass().getCanonicalName()));
+ public int getCumulativeCost() {
+ int cost = this.getSelfCost();
+
+ for (LogicalExpression e : this) {
+ cost += e.getCumulativeCost();
+ }
+
+ return cost;
}
}
http://git-wip-us.apache.org/repos/asf/drill/blob/b5c1ffec/common/src/main/java/org/apache/drill/common/expression/TypedNullConstant.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/expression/TypedNullConstant.java b/common/src/main/java/org/apache/drill/common/expression/TypedNullConstant.java
index d94fd07..bd129d6 100644
--- a/common/src/main/java/org/apache/drill/common/expression/TypedNullConstant.java
+++ b/common/src/main/java/org/apache/drill/common/expression/TypedNullConstant.java
@@ -51,14 +51,4 @@ public class TypedNullConstant extends LogicalExpressionBase {
return Iterators.emptyIterator();
}
- @Override
- public int getSelfCost() {
- return 0; // TODO
- }
-
- @Override
- public int getCumulativeCost() {
- return 0; // TODO
- }
-
}
http://git-wip-us.apache.org/repos/asf/drill/blob/b5c1ffec/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 c4237d5..e095e7e 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
@@ -136,17 +136,6 @@ public class ValueExpressions {
public Iterator<LogicalExpression> iterator() {
return Iterators.emptyIterator();
}
-
- @Override
- public int getSelfCost() {
- return 0; // TODO
- }
-
- @Override
- public int getCumulativeCost() {
- return 0; // TODO
- }
-
}
public static class BooleanExpression extends ValueExpression<Boolean> {
@@ -207,16 +196,6 @@ public class ValueExpressions {
return Iterators.emptyIterator();
}
- @Override
- public int getSelfCost() {
- return 0; // TODO
- }
-
- @Override
- public int getCumulativeCost() {
- return 0; // TODO
- }
-
}
public static class IntExpression extends LogicalExpressionBase {
@@ -249,17 +228,6 @@ public class ValueExpressions {
return Iterators.emptyIterator();
}
- @Override
- public int getSelfCost() {
- return 0; // TODO
- }
-
- @Override
- public int getCumulativeCost() {
- return 0; // TODO
- }
-
-
}
public static class Decimal9Expression extends LogicalExpressionBase {
@@ -302,18 +270,6 @@ public class ValueExpressions {
public Iterator<LogicalExpression> iterator() {
return Iterators.emptyIterator();
}
-
- @Override
- public int getSelfCost() {
- return 0; // TODO
- }
-
- @Override
- public int getCumulativeCost() {
- return 0; // TODO
- }
-
-
}
public static class Decimal18Expression extends LogicalExpressionBase {
@@ -357,16 +313,6 @@ public class ValueExpressions {
return Iterators.emptyIterator();
}
- @Override
- public int getSelfCost() {
- return 0; // TODO
- }
-
- @Override
- public int getCumulativeCost() {
- return 0; // TODO
- }
-
}
public static class Decimal28Expression extends LogicalExpressionBase {
@@ -398,15 +344,6 @@ public class ValueExpressions {
return Iterators.emptyIterator();
}
- @Override
- public int getSelfCost() {
- return 0; // TODO
- }
-
- @Override
- public int getCumulativeCost() {
- return 0; // TODO
- }
}
public static class Decimal38Expression extends LogicalExpressionBase {
@@ -437,16 +374,6 @@ public class ValueExpressions {
return Iterators.emptyIterator();
}
- @Override
- public int getSelfCost() {
- return 0; // TODO
- }
-
- @Override
- public int getCumulativeCost() {
- return 0; // TODO
- }
-
}
@@ -479,16 +406,6 @@ public class ValueExpressions {
return Iterators.emptyIterator();
}
- @Override
- public int getSelfCost() {
- return 0; // TODO
- }
-
- @Override
- public int getCumulativeCost() {
- return 0; // TODO
- }
-
}
public static class LongExpression extends LogicalExpressionBase {
@@ -525,17 +442,6 @@ public class ValueExpressions {
return Iterators.emptyIterator();
}
- @Override
- public int getSelfCost() {
- return 0; // TODO
- }
-
- @Override
- public int getCumulativeCost() {
- return 0; // TODO
- }
-
-
}
@@ -573,16 +479,6 @@ public class ValueExpressions {
return Iterators.emptyIterator();
}
- @Override
- public int getSelfCost() {
- return 0; // TODO
- }
-
- @Override
- public int getCumulativeCost() {
- return 0; // TODO
- }
-
}
@@ -620,16 +516,6 @@ public class ValueExpressions {
return Iterators.emptyIterator();
}
- @Override
- public int getSelfCost() {
- return 0; // TODO
- }
-
- @Override
- public int getCumulativeCost() {
- return 0; // TODO
- }
-
}
public static class TimeStampExpression extends LogicalExpressionBase {
@@ -666,16 +552,6 @@ public class ValueExpressions {
return Iterators.emptyIterator();
}
- @Override
- public int getSelfCost() {
- return 0; // TODO
- }
-
- @Override
- public int getCumulativeCost() {
- return 0; // TODO
- }
-
}
public static class IntervalYearExpression extends LogicalExpressionBase {
@@ -712,16 +588,6 @@ public class ValueExpressions {
return Iterators.emptyIterator();
}
- @Override
- public int getSelfCost() {
- return 0; // TODO
- }
-
- @Override
- public int getCumulativeCost() {
- return 0; // TODO
- }
-
}
public static class IntervalDayExpression extends LogicalExpressionBase {
@@ -765,16 +631,6 @@ public class ValueExpressions {
return Iterators.emptyIterator();
}
- @Override
- public int getSelfCost() {
- return 0; // TODO
- }
-
- @Override
- public int getCumulativeCost() {
- return 0; // TODO
- }
-
}
public static class QuotedString extends ValueExpression<String> {
http://git-wip-us.apache.org/repos/asf/drill/blob/b5c1ffec/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/expr/HiveFuncHolderExpr.java
----------------------------------------------------------------------
diff --git a/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/expr/HiveFuncHolderExpr.java b/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/expr/HiveFuncHolderExpr.java
index 3312d91..3121c47 100644
--- a/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/expr/HiveFuncHolderExpr.java
+++ b/contrib/storage-hive/core/src/main/java/org/apache/drill/exec/expr/HiveFuncHolderExpr.java
@@ -25,6 +25,7 @@ import org.apache.drill.common.expression.FunctionHolderExpression;
import org.apache.drill.common.expression.LogicalExpression;
import org.apache.drill.common.expression.fn.FuncHolder;
import org.apache.drill.common.types.TypeProtos.MajorType;
+import org.apache.drill.exec.expr.annotations.FunctionTemplate;
import org.apache.drill.exec.expr.fn.HiveFuncHolder;
public class HiveFuncHolderExpr extends FunctionHolderExpression implements Iterable<LogicalExpression>{
@@ -72,4 +73,9 @@ public class HiveFuncHolderExpr extends FunctionHolderExpression implements Iter
return new HiveFuncHolderExpr(this.nameUsed, this.holder, args, this.getPosition());
}
+ @Override
+ public int getSelfCost() {
+ return FunctionTemplate.FunctionCostCategory.getDefault().getValue();
+ }
+
}