Github user watermen commented on a diff in the pull request:

    https://github.com/apache/spark/pull/5290#discussion_r28217715
  
    --- Diff: 
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala
 ---
    @@ -379,6 +381,33 @@ class Analyzer(catalog: Catalog,
         }
       }
     
    +  object ResolveSortAlias extends Rule[LogicalPlan] {
    +    def apply(plan: LogicalPlan): LogicalPlan = plan transform {
    +      case s @ Sort(ordering, global, a @ Aggregate(grouping, aggs, child))
    +          if !s.resolved && a.resolved =>
    +        val missingInAggs = new ArrayBuffer[NamedExpression]()
    +        val aliasedOrdering = ordering.zipWithIndex.map{
    +          case (o, i) => {
    +            o.child match {
    +              case aggOrSub @ (_: AggregateExpression | _: Substring) => {
    +                val aliasName = aggOrSub.nodeName + i
    +                missingInAggs += Alias(aggOrSub, aliasName)()
    +                SortOrder(UnresolvedAttribute(aliasName), o.direction)
    --- End diff --
    
    The other code `case (e, i) => Alias(e, s"c$i")()` may also have a name 
that conflicts when user give a alias name such as c0. And I have not idea 
about how to assign a alias name. Do we need to keep some name only for alias 
name, and check user's alias name?


---
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]

Reply via email to