diff options
author | Michael Armbrust <michael@databricks.com> | 2014-10-20 15:32:17 -0700 |
---|---|---|
committer | Michael Armbrust <michael@databricks.com> | 2014-10-20 15:32:17 -0700 |
commit | e9c1afa87b8a6d9ea02aa9f7c319a36f00c0e4c3 (patch) | |
tree | e1ee57ed12a5d743bbe70b77812557ededc06d26 /sql/catalyst/src | |
parent | 1b3ce61ce9061719d8c28d621c3200e0bff3a4e9 (diff) | |
download | spark-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/src')
-rw-r--r-- | sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala | 18 |
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] { |