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();
+  }
+
 }