Github user cloud-fan commented on a diff in the pull request:
https://github.com/apache/spark/pull/20024#discussion_r159572589
--- Diff:
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Cast.scala
---
@@ -206,6 +208,11 @@ case class Cast(child: Expression, dataType: DataType,
timeZoneId: Option[String
case DateType => buildCast[Int](_, d =>
UTF8String.fromString(DateTimeUtils.dateToString(d)))
case TimestampType => buildCast[Long](_,
t => UTF8String.fromString(DateTimeUtils.timestampToString(t,
timeZone)))
+ case ar: ArrayType =>
+ buildCast[ArrayData](_, a => {
+ val arrayData = CatalystTypeConverters.convertToScala(a,
ar).asInstanceOf[WrappedArray[_]]
--- End diff --
let's avoid to do this, I'm thinking about
```
buildCast[ArrayData](_, array => {
val res = new StringBuilder
res.append("[")
val toStringFunc = castToString(et)
var i = 0
while (i < array.numElements) {
res.append(toStringFunc(array.get(i, et)))
res.append(", ")
i += 1
}
// final cleanup and add "]"
})
```
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]