-
- Downloads
[SPARK-19716][SQL] support by-name resolution for struct type elements in array
## What changes were proposed in this pull request? Previously when we construct deserializer expression for array type, we will first cast the corresponding field to expected array type and then apply `MapObjects`. However, by doing that, we lose the opportunity to do by-name resolution for struct type inside array type. In this PR, I introduce a `UnresolvedMapObjects` to hold the lambda function and the input array expression. Then during analysis, after the input array expression is resolved, we get the actual array element type and apply by-name resolution. Then we don't need to add `Cast` for array type when constructing the deserializer expression, as the element type is determined later at analyzer. ## How was this patch tested? new regression test Author: Wenchen Fan <wenchen@databricks.com> Closes #17398 from cloud-fan/dataset.
Showing
- sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/ScalaReflection.scala 37 additions, 29 deletions...scala/org/apache/spark/sql/catalyst/ScalaReflection.scala
- sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala 16 additions, 3 deletions...ala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala
- sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/complexTypeExtractors.scala 1 addition, 1 deletion...park/sql/catalyst/expressions/complexTypeExtractors.scala
- sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/objects/objects.scala 25 additions, 7 deletions...ache/spark/sql/catalyst/expressions/objects/objects.scala
- sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/encoders/EncoderResolutionSuite.scala 52 additions, 0 deletions.../spark/sql/catalyst/encoders/EncoderResolutionSuite.scala
- sql/core/src/main/scala/org/apache/spark/sql/expressions/ReduceAggregator.scala 1 addition, 1 deletion...a/org/apache/spark/sql/expressions/ReduceAggregator.scala
- sql/core/src/test/scala/org/apache/spark/sql/DatasetSuite.scala 9 additions, 0 deletions...re/src/test/scala/org/apache/spark/sql/DatasetSuite.scala
Please register or sign in to comment