Skip to content

Commit aa49f15

Browse files
committed
[SPARK-37592][SQL] Improve performance of JoinSelection
1 parent 5edd959 commit aa49f15

File tree

3 files changed

+13
-9
lines changed

3 files changed

+13
-9
lines changed

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/hints.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ case class ResolvedHint(child: LogicalPlan, hints: HintInfo = HintInfo())
6262
*/
6363
case class JoinHint(leftHint: Option[HintInfo], rightHint: Option[HintInfo]) {
6464

65+
def isEmpty: Boolean = leftHint.isEmpty && rightHint.isEmpty
66+
6567
override def toString: String = {
6668
Seq(
6769
leftHint.map("leftHint=" + _),

sql/core/src/main/scala/org/apache/spark/sql/execution/Columnar.scala

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -548,11 +548,9 @@ case class ApplyColumnarRulesAndInsertTransitions(
548548

549549
def apply(plan: SparkPlan): SparkPlan = {
550550
var preInsertPlan: SparkPlan = plan
551-
columnarRules.foreach((r : ColumnarRule) =>
552-
preInsertPlan = r.preColumnarTransitions(preInsertPlan))
551+
columnarRules.foreach( r => preInsertPlan = r.preColumnarTransitions(preInsertPlan))
553552
var postInsertPlan = insertTransitions(preInsertPlan, outputsColumnar)
554-
columnarRules.reverse.foreach((r : ColumnarRule) =>
555-
postInsertPlan = r.postColumnarTransitions(postInsertPlan))
553+
columnarRules.reverse.foreach( r => postInsertPlan = r.postColumnarTransitions(postInsertPlan))
556554
postInsertPlan
557555
}
558556
}

sql/core/src/main/scala/org/apache/spark/sql/execution/SparkStrategies.scala

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -266,11 +266,15 @@ abstract class SparkStrategies extends QueryPlanner[SparkPlan] {
266266
}
267267
}
268268

269-
createBroadcastHashJoin(true)
270-
.orElse { if (hintToSortMergeJoin(hint)) createSortMergeJoin() else None }
271-
.orElse(createShuffleHashJoin(true))
272-
.orElse { if (hintToShuffleReplicateNL(hint)) createCartesianProduct() else None }
273-
.getOrElse(createJoinWithoutHint())
269+
if (hint.isEmpty) {
270+
createJoinWithoutHint()
271+
} else {
272+
createBroadcastHashJoin(true)
273+
.orElse { if (hintToSortMergeJoin(hint)) createSortMergeJoin() else None }
274+
.orElse(createShuffleHashJoin(true))
275+
.orElse { if (hintToShuffleReplicateNL(hint)) createCartesianProduct() else None }
276+
.getOrElse(createJoinWithoutHint())
277+
}
274278

275279
case j @ ExtractSingleColumnNullAwareAntiJoin(leftKeys, rightKeys) =>
276280
Seq(joins.BroadcastHashJoinExec(leftKeys, rightKeys, LeftAnti, BuildRight,

0 commit comments

Comments
 (0)