Github user maropu commented on a diff in the pull request: https://github.com/apache/spark/pull/22260#discussion_r213536395 --- Diff: sql/core/src/main/scala/org/apache/spark/sql/execution/ProjectionOverSchema.scala --- @@ -38,7 +38,7 @@ private[execution] case class ProjectionOverSchema(schema: StructType) { case GetArrayItem(child, arrayItemOrdinal) => getProjection(child).map { projection => GetArrayItem(projection, arrayItemOrdinal) } case a: GetArrayStructFields => - getProjection(a.child).map(p => (p, p.dataType)).map { + getProjection(a.child).map(p => (p, p.dataType)).collect { --- End diff -- How about this? IMO `.collect` can't catch illegal inputs? ``` getProjection(a.child).map(p => (p, p.dataType)).map { case (projection, ArrayType(projSchema @ StructType(_), _)) => GetArrayStructFields(projection, projSchema(a.field.name), projSchema.fieldIndex(a.field.name), projSchema.size, a.containsNull) case _ => sys.error("....") } ```
--- --------------------------------------------------------------------- To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org