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:36 UTC

[28/51] [abbrv] git commit: Add couple of optiq rule into logical plan phase. Add operator mapping for is not null, is true.

Add couple of optiq rule into logical plan phase. Add operator mapping for is not null, is true.


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

Branch: refs/heads/master
Commit: 2038bc629abb2a9620c8aade2be7bdf4d5f097a6
Parents: eeb8535
Author: Jinfeng Ni <jn...@maprtech.com>
Authored: Tue Apr 1 15:18:36 2014 -0700
Committer: Jacques Nadeau <ja...@apache.org>
Committed: Sat Apr 19 18:07:10 2014 -0700

----------------------------------------------------------------------
 .../common/expression/FunctionCallFactory.java  |  4 +-
 .../exec/planner/logical/DrillRuleSets.java     | 61 +++++++++++++++-----
 2 files changed, 49 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/2038bc62/common/src/main/java/org/apache/drill/common/expression/FunctionCallFactory.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/drill/common/expression/FunctionCallFactory.java b/common/src/main/java/org/apache/drill/common/expression/FunctionCallFactory.java
index 03be80f..50fceda 100644
--- a/common/src/main/java/org/apache/drill/common/expression/FunctionCallFactory.java
+++ b/common/src/main/java/org/apache/drill/common/expression/FunctionCallFactory.java
@@ -58,7 +58,9 @@ public class FunctionCallFactory {
     opToFuncTable.put("<>", "not_equal");
     opToFuncTable.put(">=", "greater_than_or_equal_to");
     opToFuncTable.put("<=", "less_than_or_equal_to");
-
+    opToFuncTable.put("is not null", "isnotnull");
+    opToFuncTable.put("is true", "istrue");
+    
     opToFuncTable.put("!", "not");
     opToFuncTable.put("u-", "negative");
   }

http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/2038bc62/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillRuleSets.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillRuleSets.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillRuleSets.java
index 562a3d4..d17fce3 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillRuleSets.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillRuleSets.java
@@ -30,9 +30,21 @@ import org.apache.drill.exec.planner.physical.ScreenPrule;
 import org.apache.drill.exec.planner.physical.SortConvertPrule;
 import org.apache.drill.exec.planner.physical.SortPrule;
 import org.apache.drill.exec.planner.physical.StreamAggPrule;
+import org.eigenbase.rel.RelFactories;
+import org.eigenbase.rel.rules.MergeProjectRule;
 import org.eigenbase.rel.rules.PushFilterPastJoinRule;
 import org.eigenbase.rel.rules.PushFilterPastProjectRule;
 import org.eigenbase.rel.rules.PushJoinThroughJoinRule;
+import org.eigenbase.rel.rules.PushSortPastProjectRule;
+import org.eigenbase.rel.rules.ReduceAggregatesRule;
+import org.eigenbase.rel.rules.RemoveDistinctAggregateRule;
+import org.eigenbase.rel.rules.RemoveDistinctRule;
+import org.eigenbase.rel.rules.RemoveSortRule;
+import org.eigenbase.rel.rules.RemoveTrivialCalcRule;
+import org.eigenbase.rel.rules.RemoveTrivialProjectRule;
+import org.eigenbase.rel.rules.SwapJoinRule;
+import org.eigenbase.rel.rules.TableAccessRule;
+import org.eigenbase.rel.rules.UnionToDistinctRule;
 import org.eigenbase.relopt.RelOptRule;
 import org.eigenbase.relopt.volcano.AbstractConverter.ExpandConversionRule;
 
@@ -49,6 +61,27 @@ public class DrillRuleSets {
       PushJoinThroughJoinRule.LEFT, 
       // End supprot for WHERE style joins.
       
+      //Add back rules
+      
+      ExpandConversionRule.INSTANCE,
+//      SwapJoinRule.INSTANCE,
+      RemoveDistinctRule.INSTANCE,
+//      UnionToDistinctRule.INSTANCE,
+//      RemoveTrivialProjectRule.INSTANCE,
+//      RemoveTrivialCalcRule.INSTANCE,
+      RemoveSortRule.INSTANCE,
+
+//      TableAccessRule.INSTANCE, //
+      //MergeProjectRule.INSTANCE, //
+      new MergeProjectRule(true, RelFactories.DEFAULT_PROJECT_FACTORY),
+      RemoveDistinctAggregateRule.INSTANCE, //
+      ReduceAggregatesRule.INSTANCE, //
+//      SwapJoinRule.INSTANCE, //
+//      PushJoinThroughJoinRule.RIGHT, //
+//      PushJoinThroughJoinRule.LEFT, //
+      PushSortPastProjectRule.INSTANCE, //      
+
+      ////////////////////////////////
       DrillScanRule.INSTANCE,
       DrillFilterRule.INSTANCE,
       DrillProjectRule.INSTANCE,
@@ -57,9 +90,7 @@ public class DrillRuleSets {
       DrillLimitRule.INSTANCE,
       DrillSortRule.INSTANCE,
       DrillJoinRule.INSTANCE,
-      DrillUnionRule.INSTANCE
-      
-      
+      DrillUnionRule.INSTANCE      
 
       ));
   
@@ -85,21 +116,21 @@ public class DrillRuleSets {
       FilterPrule.INSTANCE,
       LimitPrule.INSTANCE
 
-//    ExpandConversionRule.instance,
-//    SwapJoinRule.instance,
-//    RemoveDistinctRule.instance,
-//    UnionToDistinctRule.instance,
-//    RemoveTrivialProjectRule.instance,
-//    RemoveTrivialCalcRule.instance,
+//    ExpandConversionRule.INSTANCE,
+//    SwapJoinRule.INSTANCE,
+//    RemoveDistinctRule.INSTANCE,
+//    UnionToDistinctRule.INSTANCE,
+//    RemoveTrivialProjectRule.INSTANCE,
+//    RemoveTrivialCalcRule.INSTANCE,
 //    RemoveSortRule.INSTANCE,
 //
-//    TableAccessRule.instance, //
-//    MergeProjectRule.instance, //
-//    PushFilterPastProjectRule.instance, //
+//    TableAccessRule.INSTANCE, //
+//    MergeProjectRule.INSTANCE, //
+//    PushFilterPastProjectRule.INSTANCE, //
 //    PushFilterPastJoinRule.FILTER_ON_JOIN, //
-//    RemoveDistinctAggregateRule.instance, //
-//    ReduceAggregatesRule.instance, //
-//    SwapJoinRule.instance, //
+//    RemoveDistinctAggregateRule.INSTANCE, //
+//    ReduceAggregatesRule.INSTANCE, //
+//    SwapJoinRule.INSTANCE, //
 //    PushJoinThroughJoinRule.RIGHT, //
 //    PushJoinThroughJoinRule.LEFT, //
 //    PushSortPastProjectRule.INSTANCE, //