diff --git a/pom.xml b/pom.xml index f302524..bdeaf9c 100644 --- a/pom.xml +++ b/pom.xml @@ -100,7 +100,7 @@ 3.4 1.7.5 0.8.0.RELEASE - 1.0.0-incubating + 1.1.0-incubating-SNAPSHOT 3.2.6 3.2.10 3.2.9 diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/TraitsUtil.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/TraitsUtil.java index f182846..be28828 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/TraitsUtil.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/TraitsUtil.java @@ -22,7 +22,7 @@ import org.apache.calcite.plan.RelOptCluster; import org.apache.calcite.plan.RelTraitSet; import org.apache.calcite.rel.RelCollation; -import org.apache.calcite.rel.RelCollationImpl; +import org.apache.calcite.rel.RelCollations; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveRelNode; public class TraitsUtil { @@ -32,6 +32,6 @@ public static RelTraitSet getSortTraitSet(RelOptCluster cluster, RelTraitSet tra } public static RelTraitSet getDefaultTraitSet(RelOptCluster cluster) { - return cluster.traitSetOf(HiveRelNode.CONVENTION, RelCollationImpl.EMPTY); + return cluster.traitSetOf(HiveRelNode.CONVENTION, RelCollations.EMPTY); } } diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java index 23623f3..c187535 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java @@ -49,6 +49,7 @@ import org.apache.calcite.plan.hep.HepProgramBuilder; import org.apache.calcite.rel.InvalidRelException; import org.apache.calcite.rel.RelCollation; +import org.apache.calcite.rel.RelCollations; import org.apache.calcite.rel.RelCollationImpl; import org.apache.calcite.rel.RelFieldCollation; import org.apache.calcite.rel.RelNode; @@ -68,6 +69,7 @@ import org.apache.calcite.rel.rules.JoinPushTransitivePredicatesRule; import org.apache.calcite.rel.rules.JoinToMultiJoinRule; import org.apache.calcite.rel.rules.LoptOptimizeJoinRule; +import org.apache.calcite.rel.rules.ProjectMergeRule; import org.apache.calcite.rel.rules.ProjectRemoveRule; import org.apache.calcite.rel.rules.ReduceExpressionsRule; import org.apache.calcite.rel.rules.SemiJoinFilterTransposeRule; @@ -707,7 +709,7 @@ public RelNode apply(RelOptCluster cluster, RelOptSchema relOptSchema, SchemaPlu List list = Lists.newArrayList(); list.add(HiveDefaultRelMetadataProvider.INSTANCE); RelTraitSet desiredTraits = cluster - .traitSetOf(HiveRelNode.CONVENTION, RelCollationImpl.EMPTY); + .traitSetOf(HiveRelNode.CONVENTION, RelCollations.EMPTY); HepProgram hepPgm = null; HepProgramBuilder hepPgmBldr = new HepProgramBuilder().addMatchOrder(HepMatchOrder.BOTTOM_UP) @@ -720,6 +722,7 @@ public RelNode apply(RelOptCluster cluster, RelOptSchema relOptSchema, SchemaPlu hepPgmBldr.addRuleInstance(ReduceExpressionsRule.PROJECT_INSTANCE); hepPgmBldr.addRuleInstance(ProjectRemoveRule.INSTANCE); hepPgmBldr.addRuleInstance(UnionMergeRule.INSTANCE); + hepPgmBldr.addRuleInstance(ProjectMergeRule.INSTANCE); hepPgm = hepPgmBldr.build(); HepPlanner hepPlanner = new HepPlanner(hepPgm); @@ -784,8 +787,6 @@ private RelNode applyPreJoinOrderingTransforms(RelNode basePlan, RelMetadataProv // 3. Transitive inference & Partition Pruning basePlan = hepPlan(basePlan, false, mdProvider, new JoinPushTransitivePredicatesRule( Join.class, HiveFilter.DEFAULT_FILTER_FACTORY), - // TODO: Enable it after CALCITE-407 is fixed - // RemoveTrivialProjectRule.INSTANCE, new HivePartitionPruneRule(conf)); // 4. Projection Pruning @@ -2030,7 +2031,7 @@ private RelNode genLimitLogicalPlan(QB qb, RelNode srcRel) throws SemanticExcept if (limit != null) { RexNode fetch = cluster.getRexBuilder().makeExactLiteral(BigDecimal.valueOf(limit)); RelTraitSet traitSet = cluster.traitSetOf(HiveRelNode.CONVENTION); - RelCollation canonizedCollation = traitSet.canonize(RelCollationImpl.EMPTY); + RelCollation canonizedCollation = traitSet.canonize(RelCollations.EMPTY); sortRel = new HiveSort(cluster, traitSet, srcRel, canonizedCollation, null, fetch); RowResolver outputRR = new RowResolver();