drill-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From amansi...@apache.org
Subject drill git commit: DRILL-2746, DRILL-3130: Add two DrillRules to push Project and Filter below set operators
Date Mon, 01 Jun 2015 18:23:28 GMT
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 <hsuanyi@usc.edu>
Authored: Mon May 18 13:58:01 2015 -0700
Committer: Aman Sinha <asinha@maprtech.com>
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


Mime
View raw message