Github user dilipbiswal commented on a diff in the pull request:
https://github.com/apache/spark/pull/9844#discussion_r45691681
--- Diff:
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala
---
@@ -661,7 +666,9 @@ class Analyzer(
val evaluatedOrderings =
resolvedAliasedOrdering.zip(sortOrder).map {
case (evaluated, order) =>
val index = originalAggExprs.indexWhere {
- case Alias(child, _) => child semanticEquals
evaluated.child
+ case a@Alias(child, _) =>
+ (child semanticEquals evaluated.child) ||
+ a.exprId ==
evaluated.child.asInstanceOf[AttributeReference].exprId
case other => other semanticEquals evaluated.child
--- End diff --
@cloud-fan Thanks for your help. I have made changes based on your
comments. There is one change i am a little concerned about and need your input.
After computing the finalSortOrders, i am passing it to the pushdown
computation logic where it tries to compare the semantic equality between sort
attributes and aggregate expression attributes. For the already resolved
attribute, the comparison is failing and it considers the attribute as
pushdownable and things just go wrong :-). So i am comparing the expression id
of the resolved alias against the aggregation expression's attribute reference.
It does not seem clean though :-)
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]