maropu commented on a change in pull request #26441: [SPARK-29682][SQL] Resolve 
conflicting references in aggregate expressions 
URL: https://github.com/apache/spark/pull/26441#discussion_r344483027
 
 

 ##########
 File path: 
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala
 ##########
 @@ -949,14 +949,19 @@ class Analyzer(
             if oldVersion.outputSet.intersect(conflictingAttributes).nonEmpty 
=>
           (oldVersion, oldVersion.copy(serializer = 
oldVersion.serializer.map(_.newInstance())))
 
-        // Handle projects that create conflicting aliases.
         case oldVersion @ Project(projectList, _)
-            if 
findAliases(projectList).intersect(conflictingAttributes).nonEmpty =>
-          (oldVersion, oldVersion.copy(projectList = newAliases(projectList)))
+            if hasConflict(projectList, conflictingAttributes) =>
+          (oldVersion,
+            oldVersion.copy(
+              projectList =
+                newNamedExpression(projectList, conflictingAttributes)))
 
         case oldVersion @ Aggregate(_, aggregateExpressions, _)
 
 Review comment:
   It seems that the query in the PR description works well with the fix below, 
too;
   ```
           case oldVersion @ Aggregate(_, aggregateExpressions, _)
               if AttributeSet(aggregateExpressions.map(_.toAttribute))
                 .intersect(conflictingAttributes).nonEmpty =>
           (oldVersion, oldVersion.copy(aggregateExpressions = 
aggregateExpressions.map(_.newInstance())))
   ```
   Could we fix this issue in an easier way than the current fix?

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to