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 <[email protected]>
Authored: Tue Apr 1 15:18:36 2014 -0700
Committer: Jacques Nadeau <[email protected]>
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, //      

Reply via email to