Skip to content

Commit 0798fca

Browse files
committed
check all expression
1 parent 972ae13 commit 0798fca

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,9 @@ trait CheckAnalysis extends PredicateHelper {
158158
case g: GroupingID =>
159159
failAnalysis("grouping_id() can only be used with GroupingSets/Cube/Rollup")
160160

161-
case Alias(w: WindowFunction, _) =>
161+
case e: Expression if e.children.exists(_.isInstanceOf[WindowFunction]) &&
162+
!e.isInstanceOf[WindowExpression] =>
163+
val w = e.children.find(_.isInstanceOf[WindowFunction]).get
162164
failAnalysis(s"Window function $w requires an OVER clause.")
163165

164166
case w @ WindowExpression(AggregateExpression(_, _, true, _, _), _) =>

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -888,5 +888,11 @@ class AnalysisSuite extends AnalysisTest with Matchers {
888888
test("throw user facing error when use WindowFunction directly") {
889889
assertAnalysisError(testRelation2.select(RowNumber()),
890890
Seq("Window function row_number() requires an OVER clause."))
891+
892+
assertAnalysisError(testRelation2.select(Sum(RowNumber())),
893+
Seq("Window function row_number() requires an OVER clause."))
894+
895+
assertAnalysisError(testRelation2.select(RowNumber() + 1),
896+
Seq("Window function row_number() requires an OVER clause."))
891897
}
892898
}

0 commit comments

Comments
 (0)