frankyin-factual commented on a change in pull request #28898:
URL: https://github.com/apache/spark/pull/28898#discussion_r448719088
##########
File path:
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/optimizer/NestedColumnAliasing.scala
##########
@@ -172,13 +188,23 @@ object NestedColumnAliasing {
(f, Alias(f, s"_gen_alias_${exprId.id}")(exprId, Seq.empty, None))
}
+
+ // Do deduplication based on semanticEquals, and then sum.
+ val nestedFieldNum = nestedFieldToAlias
+ .foldLeft(Seq[ExtractValue]()) {
+ (unique, curr) => if (!unique.exists(curr._1.semanticEquals(_))) {
+ curr._1 +: unique
+ } else {
+ unique
+ }
+ }
+ .map { t => totalFieldNum(t.dataType) }
+ .sum
Review comment:
Take a look at this query in comment below:
https://github.com/apache/spark/pull/28898#discussion_r448718366
If we don't do deduplication, then the calculation will gives us `3`. Then
by failing this if-statement, it assumes all the nested columns in `name` is
referenced, which isn't the case. Thus, deduplication is needed.
----------------------------------------------------------------
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]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]