aboutsummaryrefslogtreecommitdiff
path: root/sql/catalyst
diff options
context:
space:
mode:
authorMichael Armbrust <michael@databricks.com>2014-10-20 15:32:17 -0700
committerMichael Armbrust <michael@databricks.com>2014-10-20 15:32:17 -0700
commite9c1afa87b8a6d9ea02aa9f7c319a36f00c0e4c3 (patch)
treee1ee57ed12a5d743bbe70b77812557ededc06d26 /sql/catalyst
parent1b3ce61ce9061719d8c28d621c3200e0bff3a4e9 (diff)
downloadspark-e9c1afa87b8a6d9ea02aa9f7c319a36f00c0e4c3.tar.gz
spark-e9c1afa87b8a6d9ea02aa9f7c319a36f00c0e4c3.tar.bz2
spark-e9c1afa87b8a6d9ea02aa9f7c319a36f00c0e4c3.zip
[SPARK-3800][SQL] Clean aliases from grouping expressions
Author: Michael Armbrust <michael@databricks.com> Closes #2658 from marmbrus/nestedAggs and squashes the following commits: 862b763 [Michael Armbrust] Merge remote-tracking branch 'origin/master' into nestedAggs 3234521 [Michael Armbrust] Merge remote-tracking branch 'origin/master' into nestedAggs 8b06fdc [Michael Armbrust] possible fix for grouping on nested fields
Diffstat (limited to 'sql/catalyst')
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala18
1 files changed, 18 insertions, 0 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 8255306314..a448c79421 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
@@ -60,6 +60,7 @@ class Analyzer(catalog: Catalog, registry: FunctionRegistry, caseSensitive: Bool
ResolveFunctions ::
GlobalAggregates ::
UnresolvedHavingClauseAttributes ::
+ TrimAliases ::
typeCoercionRules ++
extendedRules : _*),
Batch("Check Analysis", Once,
@@ -90,6 +91,23 @@ class Analyzer(catalog: Catalog, registry: FunctionRegistry, caseSensitive: Bool
}
/**
+ * Removes no-op Alias expressions from the plan.
+ */
+ object TrimAliases extends Rule[LogicalPlan] {
+ def apply(plan: LogicalPlan): LogicalPlan = plan transform {
+ case Aggregate(groups, aggs, child) =>
+ Aggregate(
+ groups.map {
+ _ transform {
+ case Alias(c, _) => c
+ }
+ },
+ aggs,
+ child)
+ }
+ }
+
+ /**
* Checks for non-aggregated attributes with aggregation
*/
object CheckAggregation extends Rule[LogicalPlan] {