Repository: drill
Updated Branches:
  refs/heads/master bd8ac4fca -> 8e0f7039f


DRILL-3004 : Fix CanNotPlan in physical planning when disabling hash join and 
exchange.

Minor comment update.


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

Branch: refs/heads/master
Commit: 8e0f7039f753a6800a5b8b27ce014f75fe55e0c1
Parents: bd8ac4f
Author: Jinfeng Ni <[email protected]>
Authored: Wed May 20 13:50:50 2015 -0700
Committer: Jinfeng Ni <[email protected]>
Committed: Wed May 27 14:26:41 2015 -0700

----------------------------------------------------------------------
 .../physical/DrillDistributionTraitDef.java     | 24 +++++++------------
 .../org/apache/drill/TestExampleQueries.java    | 25 ++++++++++++++++++++
 2 files changed, 34 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/drill/blob/8e0f7039/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/DrillDistributionTraitDef.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/DrillDistributionTraitDef.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/DrillDistributionTraitDef.java
index d6f796c..c9af8af 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/DrillDistributionTraitDef.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/DrillDistributionTraitDef.java
@@ -72,30 +72,24 @@ public class DrillDistributionTraitDef extends 
RelTraitDef<DrillDistributionTrai
         return null;
     }
 
-    RelNode newRel = null;
     switch(toDist.getType()){
       // UnionExchange, HashToRandomExchange, OrderedPartitionExchange and 
BroadcastExchange destroy the ordering property,
       // therefore RelCollation is set to default, which is EMPTY.
       case SINGLETON:
-        newRel = new UnionExchangePrel(rel.getCluster(), 
planner.emptyTraitSet().plus(Prel.DRILL_PHYSICAL).plus(toDist), rel);
-        break;
+        return new UnionExchangePrel(rel.getCluster(), 
planner.emptyTraitSet().plus(Prel.DRILL_PHYSICAL).plus(toDist), rel);
       case HASH_DISTRIBUTED:
-        newRel = new HashToRandomExchangePrel(rel.getCluster(), 
planner.emptyTraitSet().plus(Prel.DRILL_PHYSICAL).plus(toDist), rel,
-                                            toDist.getFields());
-        break;
+        return new HashToRandomExchangePrel(rel.getCluster(), 
planner.emptyTraitSet().plus(Prel.DRILL_PHYSICAL).plus(toDist), rel,
+                                             toDist.getFields());
       case RANGE_DISTRIBUTED:
-        newRel = new OrderedPartitionExchangePrel(rel.getCluster(), 
planner.emptyTraitSet().plus(Prel.DRILL_PHYSICAL).plus(toDist), rel);
-        break;
+        return new OrderedPartitionExchangePrel(rel.getCluster(), 
planner.emptyTraitSet().plus(Prel.DRILL_PHYSICAL).plus(toDist), rel);
       case BROADCAST_DISTRIBUTED:
-        newRel = new BroadcastExchangePrel(rel.getCluster(), 
planner.emptyTraitSet().plus(Prel.DRILL_PHYSICAL).plus(toDist), rel);
-        break;
+        return new BroadcastExchangePrel(rel.getCluster(), 
planner.emptyTraitSet().plus(Prel.DRILL_PHYSICAL).plus(toDist), rel);
+      case ANY:
+        // If target is "any", any input would satisfy "any". Return input 
directly.
+        return rel;
       default:
-        newRel = null;
+        return null;
     }
-
-    // planner.register(newRel, rel);
-
-    return newRel;
   }
 
 }

http://git-wip-us.apache.org/repos/asf/drill/blob/8e0f7039/exec/java-exec/src/test/java/org/apache/drill/TestExampleQueries.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/test/java/org/apache/drill/TestExampleQueries.java 
b/exec/java-exec/src/test/java/org/apache/drill/TestExampleQueries.java
index 75bbc13..d80e752 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/TestExampleQueries.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/TestExampleQueries.java
@@ -995,4 +995,29 @@ public class TestExampleQueries extends BaseTestQuery{
         .run();
 
   }
+
+  @Test  //DRILL_3004
+  public void testDRILL_3004() throws Exception {
+    final String query =
+        "SELECT\n" +
+        "  nations.N_NAME,\n" +
+        "  regions.R_NAME\n" +
+        "FROM\n" +
+        "  cp.`tpch/nation.parquet` nations\n" +
+        "JOIN\n" +
+        "  cp.`tpch/region.parquet` regions\n" +
+        "on nations.N_REGIONKEY = regions.R_REGIONKEY " +
+        "where 1 = 0";
+
+
+    testBuilder()
+        .sqlQuery(query)
+        .expectsEmptyResultSet()
+        .optionSettingQueriesForTestQuery("ALTER SESSION SET 
`planner.enable_hashjoin` = false; " +
+                                          "ALTER SESSION SET 
`planner.disable_exchanges` = true")
+        .build()
+        .run();
+
+  }
+
 }

Reply via email to