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/05/28 00:22:56 UTC

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

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 <jn...@apache.org>
Authored: Wed May 20 13:50:50 2015 -0700
Committer: Jinfeng Ni <jn...@apache.org>
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();
+
+  }
+
 }