From b37ca434b0efe4ca0637f8ffc13534129da05094 Mon Sep 17 00:00:00 2001 From: Uros Bojanic <221401595+uros-b@users.noreply.github.com> Date: Mon, 21 Sep 2026 10:15:13 +0000 Subject: [PATCH 1/2] [SPARK-59687][SQL] Use exists instead of find(...).isDefined in WindowExpression.hasWindowExpression --- .../spark/sql/catalyst/expressions/windowExpressions.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/windowExpressions.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/windowExpressions.scala index e6c52c08e3b1f..1b016b5f2ccc2 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/windowExpressions.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/windowExpressions.scala @@ -334,7 +334,7 @@ case class UnresolvedWindowExpression( object WindowExpression { def hasWindowExpression(e: Expression): Boolean = { - e.find(_.isInstanceOf[WindowExpression]).isDefined + e.exists(_.isInstanceOf[WindowExpression]) } def expressionToIngnoreNulls(e: Expression, source: String): Boolean = e match { From 7d11456730753172064ad76be6b503971e705c4f Mon Sep 17 00:00:00 2001 From: Uros Bojanic <221401595+uros-b@users.noreply.github.com> Date: Mon, 21 Sep 2026 10:45:38 +0000 Subject: [PATCH 2/2] More changes --- .../scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala | 2 +- .../org/apache/spark/sql/catalyst/expressions/AliasHelper.scala | 2 +- .../spark/sql/execution/datasources/v2/V2TableRefreshUtil.scala | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala index 04dcd223275ad..19df2217568bf 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala @@ -2748,7 +2748,7 @@ class Analyzer( object ResolveSQLFunctions extends Rule[LogicalPlan] { private def hasSQLFunctionExpression(exprs: Seq[Expression]): Boolean = { - exprs.exists(_.find(_.isInstanceOf[SQLFunctionExpression]).nonEmpty) + exprs.exists(_.exists(_.isInstanceOf[SQLFunctionExpression])) } /** diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/AliasHelper.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/AliasHelper.scala index f1cb20ca40619..8031ce76f356f 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/AliasHelper.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/AliasHelper.scala @@ -40,7 +40,7 @@ trait AliasHelper { // Find all the aliased expressions in the aggregate list that don't include any actual // AggregateExpression or PythonUDF, and create a map from the alias to the expression val aliasMap = plan.aggregateExpressions.collect { - case a: Alias if a.child.find(_.isInstanceOf[AggregateExpression]).isEmpty => + case a: Alias if !a.child.exists(_.isInstanceOf[AggregateExpression]) => (a.toAttribute, a) } AttributeMap(aliasMap) diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/V2TableRefreshUtil.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/V2TableRefreshUtil.scala index e900aa3a6808b..2f9bed533c25b 100644 --- a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/V2TableRefreshUtil.scala +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/v2/V2TableRefreshUtil.scala @@ -128,7 +128,7 @@ private[sql] object V2TableRefreshUtil extends SQLConfHelper with Logging { } private def containsCommand(plan: LogicalPlan): Boolean = { - plan.find(_.isInstanceOf[Command]).isDefined + plan.exists(_.isInstanceOf[Command]) } private def validateTableIdentity(currentTable: Table, relation: DataSourceV2Relation): Unit = {