Github user maropu commented on a diff in the pull request:
https://github.com/apache/spark/pull/20024#discussion_r159584656
--- Diff:
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Cast.scala
---
@@ -597,7 +605,114 @@ case class Cast(child: Expression, dataType:
DataType, timeZoneId: Option[String
"""
}
- private[this] def castToStringCode(from: DataType, ctx: CodegenContext):
CastFunction = {
+ private[this] def writeElemToBufferCode(
+ dataType: DataType,
+ buffer: String,
+ elemTerm: String,
+ ctx: CodegenContext): String = dataType match {
+ case BinaryType => s"$buffer.append(new String($elemTerm))"
+ case StringType => s"$buffer.append(new String($elemTerm.getBytes()))"
+ case DateType => s"""$buffer.append(
+
org.apache.spark.sql.catalyst.util.DateTimeUtils.dateToString($elemTerm))"""
+ case TimestampType => s"""$buffer.append(
+
org.apache.spark.sql.catalyst.util.DateTimeUtils.timestampToString($elemTerm))"""
+ case map: MapType => s"${codegenWriteMapToBuffer(map, buffer,
ctx)}($elemTerm)"
+ case ar: ArrayType => s"${codegenWriteArrayToBuffer(ar, buffer,
ctx)}($elemTerm)"
+ case st: StructType => s"${codegenWriteStructToBuffer(st, buffer,
ctx)}($elemTerm)"
--- End diff --
ok, dropped.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]