Skip to content

Commit 7bae25b

Browse files
committed
Prevent stack over flow in unknown hint resolution
1 parent e2f056f commit 7bae25b

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/ResolveHints.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ object ResolveHints {
223223
createRepartition(shuffle = false, hint)
224224
case "REPARTITION_BY_RANGE" =>
225225
createRepartitionByRange(hint)
226-
case _ => plan
226+
case _ => hint
227227
}
228228
}
229229
}

sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/ResolveHintsSuite.scala

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,4 +245,17 @@ class ResolveHintsSuite extends AnalysisTest {
245245
e => e.getLevel == Level.WARN &&
246246
e.getRenderedMessage.contains("Unrecognized hint: unknown_hint")))
247247
}
248+
249+
test("SPARK-30003: Prevent stack over flow in unknown hint resolution") {
250+
val logAppender = new MockAppender()
251+
withLogAppender(logAppender) {
252+
checkAnalysis(
253+
Project(testRelation.output, UnresolvedHint("unknown_hint", Seq("TaBlE"), table("TaBlE"))),
254+
Project(testRelation.output, testRelation),
255+
caseSensitive = false)
256+
}
257+
assert(logAppender.loggingEvents.exists(
258+
e => e.getLevel == Level.WARN &&
259+
e.getRenderedMessage.contains("Unrecognized hint: unknown_hint")))
260+
}
248261
}

0 commit comments

Comments
 (0)