diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/cost/HiveAlgorithmsUtil.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/cost/HiveAlgorithmsUtil.java index 0c13ee7..4ba10e2 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/cost/HiveAlgorithmsUtil.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/cost/HiveAlgorithmsUtil.java @@ -34,7 +34,6 @@ import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJoin; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveJoin.MapJoinStreamingRelation; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveRelNode; -import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveTableScan; import com.google.common.collect.ImmutableList; diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/cost/HiveOnTezCostModel.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/cost/HiveOnTezCostModel.java index a4233b9..af5fc5e 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/cost/HiveOnTezCostModel.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/cost/HiveOnTezCostModel.java @@ -23,6 +23,7 @@ import org.apache.calcite.plan.RelOptCost; import org.apache.calcite.rel.RelCollation; import org.apache.calcite.rel.RelDistribution; +import org.apache.calcite.rel.RelDistributions; import org.apache.calcite.rel.RelDistribution.Type; import org.apache.calcite.rel.RelNode; import org.apache.calcite.rel.metadata.RelMetadataQuery; @@ -290,9 +291,12 @@ public RelOptCost getCost(HiveJoin join) { @Override public ImmutableList getCollation(HiveJoin join) { - if (join.getStreamingSide() != MapJoinStreamingRelation.LEFT_RELATION - || join.getStreamingSide() != MapJoinStreamingRelation.RIGHT_RELATION) { - return null; + final MapJoinStreamingRelation streamingSide = join.getStreamingSide(); + if (streamingSide != MapJoinStreamingRelation.LEFT_RELATION + && streamingSide != MapJoinStreamingRelation.RIGHT_RELATION) { + // Error; default value + LOG.warn("Streaming side for map join not chosen"); + return ImmutableList.of(); } return HiveAlgorithmsUtil.getJoinCollation(join.getJoinPredicateInfo(), join.getStreamingSide()); @@ -300,9 +304,12 @@ public RelOptCost getCost(HiveJoin join) { @Override public RelDistribution getDistribution(HiveJoin join) { - if (join.getStreamingSide() != MapJoinStreamingRelation.LEFT_RELATION - || join.getStreamingSide() != MapJoinStreamingRelation.RIGHT_RELATION) { - return null; + final MapJoinStreamingRelation streamingSide = join.getStreamingSide(); + if (streamingSide != MapJoinStreamingRelation.LEFT_RELATION + && streamingSide != MapJoinStreamingRelation.RIGHT_RELATION) { + // Error; default value + LOG.warn("Streaming side for map join not chosen"); + return RelDistributions.SINGLETON; } return HiveAlgorithmsUtil.getJoinDistribution(join.getJoinPredicateInfo(), join.getStreamingSide()); @@ -456,9 +463,12 @@ public RelOptCost getCost(HiveJoin join) { @Override public ImmutableList getCollation(HiveJoin join) { - if (join.getStreamingSide() != MapJoinStreamingRelation.LEFT_RELATION - || join.getStreamingSide() != MapJoinStreamingRelation.RIGHT_RELATION) { - return null; + final MapJoinStreamingRelation streamingSide = join.getStreamingSide(); + if (streamingSide != MapJoinStreamingRelation.LEFT_RELATION + && streamingSide != MapJoinStreamingRelation.RIGHT_RELATION) { + // Error; default value + LOG.warn("Streaming side for map join not chosen"); + return ImmutableList.of(); } return HiveAlgorithmsUtil.getJoinCollation(join.getJoinPredicateInfo(), join.getStreamingSide());