Repository: drill Updated Branches: refs/heads/master 3e83b3462 -> 72f946964
DRILL-2802: Ensure project the right columns in the final query result in query logical planning. Project: http://git-wip-us.apache.org/repos/asf/drill/repo Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/f4bb5353 Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/f4bb5353 Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/f4bb5353 Branch: refs/heads/master Commit: f4bb535374541a827dfac6ac0365fa3729be3670 Parents: aa7c253 Author: Jinfeng Ni <[email protected]> Authored: Mon Jul 6 14:33:57 2015 -0700 Committer: Jinfeng Ni <[email protected]> Committed: Wed Jul 8 20:38:15 2015 -0700 ---------------------------------------------------------------------- .../planner/sql/handlers/DefaultSqlHandler.java | 4 +++- .../java/org/apache/drill/TestStarQueries.java | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/drill/blob/f4bb5353/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java index e4b6643..e96f63e 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java @@ -32,6 +32,7 @@ import org.apache.calcite.plan.hep.HepProgram; import org.apache.calcite.plan.hep.HepProgramBuilder; import org.apache.calcite.rel.RelShuttleImpl; import org.apache.calcite.rel.core.Join; +import org.apache.calcite.rel.core.Project; import org.apache.calcite.rel.core.RelFactories; import org.apache.calcite.rel.core.TableFunctionScan; import org.apache.calcite.rel.core.TableScan; @@ -490,7 +491,8 @@ public class DefaultSqlHandler extends AbstractSqlHandler { DrillProjectRel topProj = DrillProjectRel.create(rel.getCluster(), rel.getTraitSet(), rel, projections, newRowType); - if (ProjectRemoveRule.isTrivial(topProj, true)) { + // Add a final non-trivial Project to get the validatedRowType, if child is not project. + if (rel instanceof Project && ProjectRemoveRule.isTrivial(topProj, true)) { return rel; } else{ return topProj; http://git-wip-us.apache.org/repos/asf/drill/blob/f4bb5353/exec/java-exec/src/test/java/org/apache/drill/TestStarQueries.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/test/java/org/apache/drill/TestStarQueries.java b/exec/java-exec/src/test/java/org/apache/drill/TestStarQueries.java index 365acd9..d9ec965 100644 --- a/exec/java-exec/src/test/java/org/apache/drill/TestStarQueries.java +++ b/exec/java-exec/src/test/java/org/apache/drill/TestStarQueries.java @@ -19,6 +19,7 @@ package org.apache.drill; import org.apache.drill.common.exceptions.UserException; import org.apache.drill.common.types.TypeProtos; +import org.apache.drill.common.util.FileUtils; import org.apache.drill.common.util.TestTools; import org.junit.Test; @@ -456,4 +457,23 @@ public class TestStarQueries extends BaseTestQuery{ " where n2.n_regionkey = r2.r_regionkey)") .build().run(); } + + + @Test //DRILL-2802 + public void testSelectPartitionColumnOnly() throws Exception { + final String table = FileUtils.getResourceAsFile("/multilevel/parquet").toURI().toString(); + final String query1 = String.format("select dir0 from dfs_test.`%s` limit 1 ", table); + + final String[] expectedPlan1 = {".*Project.*dir0=\\[\\$0\\]"}; + final String[] excludedPlan1 = {}; + PlanTestBase.testPlanMatchingPatterns(query1, expectedPlan1, excludedPlan1); + + final String query2 = String.format("select dir0, dir1 from dfs_test.`%s` limit 1 ", table); + + final String[] expectedPlan2 = {".*Project.*dir0=\\[\\$0\\], dir1=\\[\\$1\\]"}; + final String[] excludedPlan2 = {}; + PlanTestBase.testPlanMatchingPatterns(query2, expectedPlan2, excludedPlan2); + + } + }
