Repository: drill
Updated Branches:
  refs/heads/master b56086436 -> bca206552


DRILL-2746, DRILL-3130: Add two DrillRules to push Project and Filter below set 
operators


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

Branch: refs/heads/master
Commit: bca20655283d351d5f5c4090e9047419ff22c75e
Parents: b560864
Author: Hsuan-Yi Chu <[email protected]>
Authored: Mon May 18 13:58:01 2015 -0700
Committer: Aman Sinha <[email protected]>
Committed: Mon Jun 1 11:13:17 2015 -0700

----------------------------------------------------------------------
 .../logical/DrillProjectSetOpTransposeRule.java |  31 +++
 .../exec/planner/logical/DrillRuleSets.java     |  15 +-
 .../java/org/apache/drill/TestUnionAll.java     | 276 ++++++++++++++++++-
 ...stProjectDownOverUnionAllImplicitCasting.tsv |  10 +
 .../testProjectFiltertPushDownOverUnionAll.tsv  |   6 +
 ...stProjectPushDownOverUnionAllWithProject.tsv |  30 ++
 ...rojectPushDownOverUnionAllWithoutProject.tsv |  30 ++
 ...tPushDownProjectColumnReorderingAndAlias.tsv |  30 ++
 ...rojectWithExpressionPushDownOverUnionAll.tsv |  30 ++
 9 files changed, 448 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/drill/blob/bca20655/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillProjectSetOpTransposeRule.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillProjectSetOpTransposeRule.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillProjectSetOpTransposeRule.java
new file mode 100644
index 0000000..bde82e7
--- /dev/null
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillProjectSetOpTransposeRule.java
@@ -0,0 +1,31 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.drill.exec.planner.logical;
+
+import org.apache.calcite.plan.RelOptRule;
+import org.apache.calcite.rel.rules.ProjectSetOpTransposeRule;
+import org.apache.calcite.rel.rules.PushProjector;
+
+public class DrillProjectSetOpTransposeRule extends ProjectSetOpTransposeRule {
+  public final static RelOptRule INSTANCE = new 
DrillProjectSetOpTransposeRule(DrillConditions.PRESERVE_ITEM);
+
+  protected DrillProjectSetOpTransposeRule(PushProjector.ExprCondition 
preserveExprCondition) {
+    super(preserveExprCondition);
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/drill/blob/bca20655/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillRuleSets.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillRuleSets.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillRuleSets.java
index f7cfbf4..655ad92 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillRuleSets.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillRuleSets.java
@@ -23,6 +23,7 @@ import java.util.List;
 
 import org.apache.calcite.rel.rules.AggregateExpandDistinctAggregatesRule;
 import org.apache.calcite.rel.rules.AggregateRemoveRule;
+import org.apache.calcite.rel.rules.FilterSetOpTransposeRule;
 import org.apache.calcite.rel.rules.JoinPushThroughJoinRule;
 import org.apache.calcite.rel.rules.ProjectRemoveRule;
 import org.apache.calcite.rel.rules.ReduceExpressionsRule;
@@ -120,12 +121,17 @@ public class DrillRuleSets {
     if (DRILL_BASIC_RULES == null) {
 
       DRILL_BASIC_RULES = new DrillRuleSet(ImmutableSet.<RelOptRule> 
builder().add( //
-        // Add support for WHERE style joins.
-      DrillPushFilterPastProjectRule.INSTANCE,
+      // Add support for WHERE style joins.
       DrillFilterJoinRules.DRILL_FILTER_ON_JOIN,
       DrillFilterJoinRules.DRILL_JOIN,
       // End support for WHERE style joins.
 
+      /*
+       Filter push-down related rules
+       */
+      DrillPushFilterPastProjectRule.INSTANCE,
+      FilterSetOpTransposeRule.INSTANCE,
+
       FilterMergeRule.INSTANCE,
       AggregateRemoveRule.INSTANCE,
       ProjectRemoveRule.NAME_CALC_INSTANCE,
@@ -136,11 +142,12 @@ public class DrillRuleSets {
       DrillReduceAggregatesRule.INSTANCE,
 
       /*
-      Projection push-down related rules
-      */
+       Projection push-down related rules
+       */
       DrillPushProjectPastFilterRule.INSTANCE,
       DrillPushProjectPastJoinRule.INSTANCE,
       DrillPushProjIntoScan.INSTANCE,
+      DrillProjectSetOpTransposeRule.INSTANCE,
 
       PruneScanRule.getFilterOnProject(context),
       PruneScanRule.getFilterOnScan(context),

http://git-wip-us.apache.org/repos/asf/drill/blob/bca20655/exec/java-exec/src/test/java/org/apache/drill/TestUnionAll.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/TestUnionAll.java 
b/exec/java-exec/src/test/java/org/apache/drill/TestUnionAll.java
index 5f98d90..b9cca2e 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/TestUnionAll.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/TestUnionAll.java
@@ -22,7 +22,6 @@ import org.apache.drill.common.types.TypeProtos;
 import org.apache.drill.common.util.FileUtils;
 import org.apache.drill.exec.work.foreman.SqlUnsupportedException;
 import org.apache.drill.exec.work.foreman.UnsupportedRelOperatorException;
-import org.junit.Ignore;
 import org.junit.Test;
 
 public class TestUnionAll extends BaseTestQuery{
@@ -327,11 +326,11 @@ public class TestUnionAll extends BaseTestQuery{
   public void testAggregationOnUnionAllOperator() throws Exception {
     String root = 
FileUtils.getResourceAsFile("/store/text/data/t.json").toURI().toString();
     String query1 = String.format(
-        "(select calc1, max(b1) as `max`, min(b1) as `min`, count(c1) as 
`count` " +
-        "from (select a1 + 10 as calc1, b1, c1 from dfs_test.`%s` " +
-        "union all " +
-        "select a1 + 100 as diff1, b1 as diff2, c1 as diff3 from 
dfs_test.`%s`) " +
-        "group by calc1 order by calc1)", root, root);
+            "(select calc1, max(b1) as `max`, min(b1) as `min`, count(c1) as 
`count` " +
+                    "from (select a1 + 10 as calc1, b1, c1 from dfs_test.`%s` 
" +
+                    "union all " +
+                    "select a1 + 100 as diff1, b1 as diff2, c1 as diff3 from 
dfs_test.`%s`) " +
+                    "group by calc1 order by calc1)", root, root);
 
     String query2 = String.format(
         "(select calc1, min(b1) as `min`, max(b1) as `max`, count(c1) as 
`count` " +
@@ -526,4 +525,269 @@ public class TestUnionAll extends BaseTestQuery{
       .baselineValues(false)
       .build().run();
   }
+
+  @Test // see DRILL-2746
+  public void testFilterPushDownOverUnionAll() throws Exception {
+    String query = "select n_regionkey from \n"
+        + "(select n_regionkey from cp.`tpch/nation.parquet` union all select 
r_regionkey from cp.`tpch/region.parquet`) \n"
+        + "where n_regionkey > 0 and n_regionkey < 2 \n"
+        + "order by n_regionkey";
+
+    // Validate the plan
+    final String[] expectedPlan = {"UnionAll.*\n" +
+        ".*SelectionVectorRemover.*\n" +
+            ".*Filter.*\n" +
+                ".*Scan.*\n" +
+        ".*SelectionVectorRemover.*\n" +
+            ".*Filter.*\n" +
+                ".*Scan"};
+    final String[] excludedPlan = {"Filter.*\n.*UnionAll"};
+    PlanTestBase.testPlanMatchingPatterns(query, expectedPlan, excludedPlan);
+
+    // Validate the result
+    testBuilder()
+        .sqlQuery(query)
+        .ordered()
+        .baselineColumns("n_regionkey")
+        .baselineValues(1)
+        .baselineValues(1)
+        .baselineValues(1)
+        .baselineValues(1)
+        .baselineValues(1)
+        .baselineValues(1)
+        .build()
+        .run();
+  }
+
+  @Test // see DRILL-2746
+  public void testInListPushDownOverUnionAll() throws Exception {
+    String query = "select n_nationkey \n" +
+        "from (select n1.n_nationkey from cp.`tpch/nation.parquet` n1 inner 
join cp.`tpch/region.parquet` r1 on n1.n_regionkey = r1.r_regionkey \n" +
+        "union all \n" +
+        "select n2.n_nationkey from cp.`tpch/nation.parquet` n2 inner join 
cp.`tpch/region.parquet` r2 on n2.n_regionkey = r2.r_regionkey) \n" +
+        "where n_nationkey in (1, 2)";
+
+    // Validate the plan
+    final String[] expectedPlan = {"UnionAll.*\n" +
+        ".*Project.*\n" +
+            ".*HashJoin.*\n" +
+                ".*SelectionVectorRemover.*\n" +
+                    ".*Filter.*\n" +
+                        ".*Project.*\n" +
+                            ".*Scan.*\n" +
+                ".*Scan.*\n" +
+        ".*Project.*\n" +
+            ".*HashJoin.*\n" +
+                ".*SelectionVectorRemover.*\n" +
+                    ".*Filter.*\n" +
+                        ".*Project.*\n" +
+                            ".*Scan.*\n" +
+                ".*Scan"};
+    final String[] excludedPlan = {"Filter.*\n.*UnionAll"};
+    PlanTestBase.testPlanMatchingPatterns(query, expectedPlan, excludedPlan);
+
+    // Validate the result
+    testBuilder()
+        .sqlQuery(query)
+        .ordered()
+        .baselineColumns("n_nationkey")
+        .baselineValues(1)
+        .baselineValues(2)
+        .baselineValues(1)
+        .baselineValues(2)
+        .build()
+        .run();
+  }
+
+  @Test // see DRILL-2746
+  public void testFilterPushDownOverUnionAllCSV() throws Exception {
+    String root = 
FileUtils.getResourceAsFile("/multilevel/csv/1994/Q1/orders_94_q1.csv").toURI().toString();
+    String query = String.format("select ct \n" +
+        "from ((select count(c1) as ct from (select columns[0] c1 from 
dfs.`%s`)) \n" +
+        "union all \n" +
+        "(select columns[0] c2 from dfs.`%s`)) \n" +
+        "where ct < 100", root, root);
+
+    // Validate the plan
+    final String[] expectedPlan = {"UnionAll.*\n" +
+        ".*SelectionVectorRemover.*\n" +
+            ".*Filter.*\n" +
+                ".*StreamAgg.*\n" +
+                    ".*Project.*\n" +
+                        ".*Scan.*\n" +
+        ".*SelectionVectorRemover.*\n" +
+            ".*Filter.*\n" +
+                ".*Project.*\n" +
+                    ".*Scan"};
+    final String[] excludedPlan = {"Filter.*\n.*UnionAll"};
+    PlanTestBase.testPlanMatchingPatterns(query, expectedPlan, excludedPlan);
+
+    // Validate the result
+    testBuilder()
+        .sqlQuery(query)
+        .ordered()
+        .baselineColumns("ct")
+        .baselineValues((long) 10)
+        .baselineValues((long) 66)
+        .baselineValues((long) 99)
+        .build().run();
+  }
+
+  @Test // see DRILL-3130
+  public void testProjectPushDownOverUnionAllWithProject() throws Exception {
+    String query = "select n_nationkey, n_name from \n" +
+        "(select n_nationkey, n_name, n_comment from cp.`tpch/nation.parquet` 
\n" +
+        "union all select r_regionkey, r_name, r_comment  from 
cp.`tpch/region.parquet`)";
+
+    // Validate the plan
+    final String[] expectedPlan = {"UnionAll.*\n" +
+        ".*Project.*\n" +
+            ".*Scan.*\n" +
+        ".*Project.*\n" +
+            ".*Scan"};
+    final String[] excludedPlan = {"Project.*\n.*UnionAll"};
+    PlanTestBase.testPlanMatchingPatterns(query, expectedPlan, excludedPlan);
+
+    testBuilder()
+        .sqlQuery(query)
+        .unOrdered()
+        
.csvBaselineFile("testframework/testUnionAllQueries/testProjectPushDownOverUnionAllWithProject.tsv")
+        .baselineTypes(TypeProtos.MinorType.INT, TypeProtos.MinorType.VARCHAR)
+        .baselineColumns("n_nationkey", "n_name")
+        .build()
+        .run();
+  }
+
+  @Test // see DRILL-3130
+  public void testProjectPushDownOverUnionAllWithoutProject() throws Exception 
{
+    String query = "select n_nationkey from \n" +
+        "(select n_nationkey, n_name, n_comment from cp.`tpch/nation.parquet` 
\n" +
+        "union all select r_regionkey, r_name, r_comment  from 
cp.`tpch/region.parquet`)";
+
+    // Validate the plan
+    final String[] expectedPlan = {"UnionAll.*\n" +
+        ".*Scan.*\n" +
+        ".*Scan"};
+    final String[] excludedPlan = {"Project"};
+    PlanTestBase.testPlanMatchingPatterns(query, expectedPlan, excludedPlan);
+
+    // Validate the result
+    testBuilder()
+        .sqlQuery(query)
+        .unOrdered()
+        
.csvBaselineFile("testframework/testUnionAllQueries/testProjectPushDownOverUnionAllWithoutProject.tsv")
+        .baselineTypes(TypeProtos.MinorType.INT)
+        .baselineColumns("n_nationkey")
+        .build()
+        .run();
+  }
+
+  @Test // see DRILL-3130
+  public void testProjectWithExpressionPushDownOverUnionAll() throws Exception 
{
+    String query = "select 2 * n_nationkey as col from \n" +
+        "(select n_nationkey, n_name, n_comment from cp.`tpch/nation.parquet` 
\n" +
+        "union all select r_regionkey, r_name, r_comment  from 
cp.`tpch/region.parquet`)";
+
+    // Validate the plan
+    final String[] expectedPlan = {"UnionAll.*\n" +
+        ".*Project.*\n" +
+            ".*Scan.*\n" +
+        ".*Project.*\n" +
+            ".*Scan"};
+    final String[] excludedPlan = {"Project.*\n.*UnionAll"};
+    PlanTestBase.testPlanMatchingPatterns(query, expectedPlan, excludedPlan);
+
+    // Validate the result
+    testBuilder()
+        .sqlQuery(query)
+        .unOrdered()
+        
.csvBaselineFile("testframework/testUnionAllQueries/testProjectWithExpressionPushDownOverUnionAll.tsv")
+        .baselineTypes(TypeProtos.MinorType.INT)
+        .baselineColumns("col")
+        .build()
+        .run();
+  }
+
+  @Test // see DRILL-3130
+  public void testProjectDownOverUnionAllImplicitCasting() throws Exception {
+    String root = 
FileUtils.getResourceAsFile("/store/text/data/nations.csv").toURI().toString();
+    String query = String.format("select 2 * n_nationkey as col from \n" +
+        "(select n_nationkey, n_name, n_comment from cp.`tpch/nation.parquet` 
\n" +
+        "union all select columns[0], columns[1], columns[2] from dfs.`%s`) 
\n" +
+        "order by col limit 10", root);
+
+    // Validate the plan
+    final String[] expectedPlan = {"UnionAll.*\n." +
+        ".*Project.*\n" +
+            ".*Scan.*\n" +
+        ".*Project.*\n" +
+            ".*Scan"};
+    final String[] excludedPlan = {"Project.*\\*.*\n.*UnionAll"};
+    PlanTestBase.testPlanMatchingPatterns(query, expectedPlan, excludedPlan);
+
+    // Validate the result
+    testBuilder()
+        .sqlQuery(query)
+        .unOrdered()
+        
.csvBaselineFile("testframework/testUnionAllQueries/testProjectDownOverUnionAllImplicitCasting.tsv")
+        .baselineTypes(TypeProtos.MinorType.INT)
+        .baselineColumns("col")
+        .build()
+        .run();
+  }
+
+  @Test // see DRILL-3130
+  public void testProjectPushDownProjectColumnReorderingAndAlias() throws 
Exception {
+    String query = "select n_comment as col1, n_nationkey as col2, n_name as 
col3 from \n" +
+        "(select n_nationkey, n_name, n_comment from cp.`tpch/nation.parquet` 
\n" +
+        "union all select r_regionkey, r_name, r_comment  from 
cp.`tpch/region.parquet`)";
+
+    // Validate the plan
+    final String[] expectedPlan = {"UnionAll.*\n." +
+        "*Project.*\n" +
+            ".*Scan.*\n" +
+        ".*Project.*\n" +
+            ".*Scan"};
+    final String[] excludedPlan = {"Project.*\n.*UnionAll"};
+    PlanTestBase.testPlanMatchingPatterns(query, expectedPlan, excludedPlan);
+
+    // Validate the result
+    testBuilder()
+        .sqlQuery(query)
+        .unOrdered()
+        
.csvBaselineFile("testframework/testUnionAllQueries/testProjectPushDownProjectColumnReorderingAndAlias.tsv")
+        .baselineTypes(TypeProtos.MinorType.VARCHAR, TypeProtos.MinorType.INT, 
TypeProtos.MinorType.VARCHAR)
+        .baselineColumns("col1", "col2", "col3")
+        .build()
+        .run();
+  }
+
+  @Test // see DRILL-2746, DRILL-3130
+  public void testProjectFiltertPushDownOverUnionAll() throws Exception {
+    String query = "select n_nationkey from \n" +
+        "(select n_nationkey, n_name, n_comment from cp.`tpch/nation.parquet` 
\n" +
+        "union all select r_regionkey, r_name, r_comment  from 
cp.`tpch/region.parquet`) \n" +
+        "where n_nationkey > 0 and n_nationkey < 4";
+
+    // Validate the plan
+    final String[] expectedPlan = {"UnionAll.*\n" +
+        ".*SelectionVectorRemover.*\n" +
+            ".*Filter.*\n" +
+                ".*Scan.*\n" +
+        ".*SelectionVectorRemover.*\n" +
+            ".*Filter.*\n" +
+                ".*Scan"};
+    final String[] excludedPlan = {"Project", "Filter.*\n.*UnionAll"};
+    PlanTestBase.testPlanMatchingPatterns(query, expectedPlan, excludedPlan);
+
+    // Validate the result
+    testBuilder()
+        .sqlQuery(query)
+        .unOrdered()
+        
.csvBaselineFile("testframework/testUnionAllQueries/testProjectFiltertPushDownOverUnionAll.tsv")
+        .baselineTypes(TypeProtos.MinorType.INT)
+        .baselineColumns("n_nationkey")
+        .build()
+        .run();
+  }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/drill/blob/bca20655/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectDownOverUnionAllImplicitCasting.tsv
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectDownOverUnionAllImplicitCasting.tsv
 
b/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectDownOverUnionAllImplicitCasting.tsv
new file mode 100644
index 0000000..7c84ba7
--- /dev/null
+++ 
b/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectDownOverUnionAllImplicitCasting.tsv
@@ -0,0 +1,10 @@
+0
+0
+2
+2
+4
+4
+6
+6
+8
+8
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/drill/blob/bca20655/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectFiltertPushDownOverUnionAll.tsv
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectFiltertPushDownOverUnionAll.tsv
 
b/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectFiltertPushDownOverUnionAll.tsv
new file mode 100644
index 0000000..c7a7ace
--- /dev/null
+++ 
b/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectFiltertPushDownOverUnionAll.tsv
@@ -0,0 +1,6 @@
+1
+2
+3
+1
+2
+3
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/drill/blob/bca20655/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectPushDownOverUnionAllWithProject.tsv
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectPushDownOverUnionAllWithProject.tsv
 
b/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectPushDownOverUnionAllWithProject.tsv
new file mode 100644
index 0000000..7d708b0
--- /dev/null
+++ 
b/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectPushDownOverUnionAllWithProject.tsv
@@ -0,0 +1,30 @@
+0      ALGERIA
+1      ARGENTINA
+2      BRAZIL
+3      CANADA
+4      EGYPT
+5      ETHIOPIA
+6      FRANCE
+7      GERMANY
+8      INDIA
+9      INDONESIA
+10     IRAN
+11     IRAQ
+12     JAPAN
+13     JORDAN
+14     KENYA
+15     MOROCCO
+16     MOZAMBIQUE
+17     PERU
+18     CHINA
+19     ROMANIA
+20     SAUDI ARABIA
+21     VIETNAM
+22     RUSSIA
+23     UNITED KINGDOM
+24     UNITED STATES
+0      AFRICA
+1      AMERICA
+2      ASIA
+3      EUROPE
+4      MIDDLE EAST
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/drill/blob/bca20655/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectPushDownOverUnionAllWithoutProject.tsv
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectPushDownOverUnionAllWithoutProject.tsv
 
b/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectPushDownOverUnionAllWithoutProject.tsv
new file mode 100644
index 0000000..c977edd
--- /dev/null
+++ 
b/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectPushDownOverUnionAllWithoutProject.tsv
@@ -0,0 +1,30 @@
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+0
+1
+2
+3
+4
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/drill/blob/bca20655/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectPushDownProjectColumnReorderingAndAlias.tsv
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectPushDownProjectColumnReorderingAndAlias.tsv
 
b/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectPushDownProjectColumnReorderingAndAlias.tsv
new file mode 100644
index 0000000..05bb0ff
--- /dev/null
+++ 
b/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectPushDownProjectColumnReorderingAndAlias.tsv
@@ -0,0 +1,30 @@
+ haggle. carefully final deposits detect slyly agai    0       ALGERIA
+al foxes promise slyly according to the regular accounts. bold requests alon   
1       ARGENTINA
+y alongside of the pending deposits. carefully special packages are about the 
ironic forges. slyly special     2       BRAZIL
+eas hang ironic, silent packages. slyly regular packages are furiously over 
the tithes. fluffily bold  3       CANADA
+y above the carefully unusual theodolites. final dugouts are quickly across 
the furiously regular d    4       EGYPT
+ven packages wake quickly. regu        5       ETHIOPIA
+refully final requests. regular, ironi 6       FRANCE
+l platelets. regular accounts x-ray: unusual, regular acco     7       GERMANY
+ss excuses cajole slyly across the packages. deposits print aroun      8       
INDIA
+ slyly express asymptotes. regular deposits haggle slyly. carefully ironic 
hockey players sleep blithely. carefull     9       INDONESIA
+efully alongside of the slyly final dependencies.      10      IRAN
+nic deposits boost atop the quickly final requests? quickly regula     11      
IRAQ
+ously. final, express gifts cajole a   12      JAPAN
+ic deposits are blithely about the carefully regular pa        13      JORDAN
+ pending excuses haggle furiously deposits. pending, express pinto beans wake 
fluffily past t  14      KENYA
+rns. blithely bold courts among the closely regular packages use furiously 
bold platelets?     15      MOROCCO
+s. ironic, unusual asymptotes wake blithely r  16      MOZAMBIQUE
+platelets. blithely pending dependencies use fluffily across the even pinto 
beans. carefully silent accoun     17      PERU
+c dependencies. furiously express notornis sleep slyly regular accounts. ideas 
sleep. depos    18      CHINA
+ular asymptotes are about the furious multipliers. express dependencies nag 
above the ironically ironic account        19      ROMANIA
+ts. silent requests haggle. closely express packages sleep across the blithely 
20      SAUDI ARABIA
+hely enticingly express accounts. even, final  21      VIETNAM
+ requests against the platelets use never according to the quickly regular 
pint        22      RUSSIA
+eans boost carefully special requests. accounts are. carefull  23      UNITED 
KINGDOM
+y final packages. slow foxes cajole quickly. quickly silent platelets breach 
ironic accounts. unusual pinto be 24      UNITED STATES
+lar deposits. blithely final packages cajole. regular waters are final 
requests. regular accounts are according to     0       AFRICA
+hs use ironic, even requests. s        1       AMERICA
+ges. thinly even pinto beans ca        2       ASIA
+ly final courts cajole furiously final excuse  3       EUROPE
+uickly special accounts cajole carefully blithely close requests. carefully 
final asymptotes haggle furiousl   4       MIDDLE EAST
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/drill/blob/bca20655/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectWithExpressionPushDownOverUnionAll.tsv
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectWithExpressionPushDownOverUnionAll.tsv
 
b/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectWithExpressionPushDownOverUnionAll.tsv
new file mode 100644
index 0000000..4a9efcd
--- /dev/null
+++ 
b/exec/java-exec/src/test/resources/testframework/testUnionAllQueries/testProjectWithExpressionPushDownOverUnionAll.tsv
@@ -0,0 +1,30 @@
+0
+2
+4
+6
+8
+10
+12
+14
+16
+18
+20
+22
+24
+26
+28
+30
+32
+34
+36
+38
+40
+42
+44
+46
+48
+0
+2
+4
+6
+8
\ No newline at end of file

Reply via email to