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