Skip to content

Commit 2198f0f

Browse files
committed
Use ExpressionSet.
1 parent f72fd67 commit 2198f0f

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/Optimizer.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1447,7 +1447,7 @@ object RemoveLiteralFromGroupExpressions extends Rule[LogicalPlan] {
14471447
object RemoveRepetitionFromGroupExpressions extends Rule[LogicalPlan] {
14481448
def apply(plan: LogicalPlan): LogicalPlan = plan transform {
14491449
case a @ Aggregate(grouping, _, _) =>
1450-
val newGrouping = grouping.distinct
1450+
val newGrouping = ExpressionSet(grouping).toSeq
14511451
a.copy(groupingExpressions = newGrouping)
14521452
}
14531453
}

sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/optimizer/AggregateOptimizeSuite.scala

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717

1818
package org.apache.spark.sql.catalyst.optimizer
1919

20+
import org.apache.spark.sql.catalyst.SimpleCatalystConf
21+
import org.apache.spark.sql.catalyst.analysis.{Analyzer, EmptyFunctionRegistry}
22+
import org.apache.spark.sql.catalyst.catalog.{InMemoryCatalog, SessionCatalog}
2023
import org.apache.spark.sql.catalyst.dsl.expressions._
2124
import org.apache.spark.sql.catalyst.dsl.plans._
2225
import org.apache.spark.sql.catalyst.expressions.Literal
@@ -25,6 +28,9 @@ import org.apache.spark.sql.catalyst.plans.logical.{LocalRelation, LogicalPlan}
2528
import org.apache.spark.sql.catalyst.rules.RuleExecutor
2629

2730
class AggregateOptimizeSuite extends PlanTest {
31+
val conf = new SimpleCatalystConf(caseSensitiveAnalysis = false)
32+
val catalog = new SessionCatalog(new InMemoryCatalog, EmptyFunctionRegistry, conf)
33+
val analyzer = new Analyzer(catalog, conf)
2834

2935
object Optimize extends RuleExecutor[LogicalPlan] {
3036
val batches = Batch("Aggregate", FixedPoint(100),
@@ -47,10 +53,10 @@ class AggregateOptimizeSuite extends PlanTest {
4753
test("remove repetition in grouping expression") {
4854
val input = LocalRelation('a.int, 'b.int, 'c.int)
4955

50-
val query = input.groupBy('a, 'b, 'b, 'a)(sum('c))
51-
val optimized = Optimize.execute(query)
56+
val query = input.groupBy('a + 1, 'b + 2, Literal(1) + 'A, Literal(2) + 'B)(sum('c))
57+
val optimized = Optimize.execute(analyzer.execute(query))
5258

53-
val correctAnswer = input.groupBy('a, 'b)(sum('c))
59+
val correctAnswer = analyzer.execute(input.groupBy('a + 1, 'b + 2)(sum('c)))
5460

5561
comparePlans(optimized, correctAnswer)
5662
}

0 commit comments

Comments
 (0)