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

Reply via email to