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
