@@ -199,36 +199,6 @@ case class Cast(child: Expression, dataType: DataType, timeZoneId: Option[String
199199
200200 // [[func]] assumes the input is no longer null because eval already does the null check.
201201 @ inline private [this ] def buildCast [T ](a : Any , func : T => Any ): Any = func(a.asInstanceOf [T ])
202- @ inline private [this ] def buildWriter [T ](
203- a : Any , buffer : UTF8StringBuilder , writer : (T , UTF8StringBuilder ) => Unit ): Unit = {
204- writer(a.asInstanceOf [T ], buffer)
205- }
206-
207- private [this ] def buildElemWriter (
208- from : DataType ): (Any , UTF8StringBuilder ) => Unit = from match {
209- case BinaryType => buildWriter[Array [Byte ]](_, _, (b, buf) => buf.append(b))
210- case StringType => buildWriter[UTF8String ](_, _, (b, buf) => buf.append(b))
211- case DateType => buildWriter[Int ](_, _,
212- (d, buf) => buf.append(DateTimeUtils .dateToString(d)))
213- case TimestampType => buildWriter[Long ](_, _,
214- (t, buf) => buf.append(DateTimeUtils .timestampToString(t)))
215- case ar : ArrayType =>
216- buildWriter[ArrayData ](_, _, (array, buf) => {
217- buf.append(" [" )
218- if (array.numElements > 0 ) {
219- val writeElemToBuffer = buildElemWriter(ar.elementType)
220- writeElemToBuffer(array.get(0 , ar.elementType), buf)
221- var i = 1
222- while (i < array.numElements) {
223- buf.append(" , " )
224- writeElemToBuffer(array.get(i, ar.elementType), buf)
225- i += 1
226- }
227- }
228- buf.append(" ]" )
229- })
230- case _ => buildWriter[Any ](_, _, (o, buf) => buf.append(String .valueOf(o)))
231- }
232202
233203 // UDFToString
234204 private [this ] def castToString (from : DataType ): Any => Any = from match {
@@ -241,17 +211,17 @@ case class Cast(child: Expression, dataType: DataType, timeZoneId: Option[String
241211 val res = new UTF8StringBuilder
242212 res.append(" [" )
243213 if (array.numElements > 0 ) {
244- val writeElemToBuffer = buildElemWriter (ar.elementType)
245- writeElemToBuffer( array.get(0 , ar.elementType), res )
214+ val toUTF8String = castToString (ar.elementType)
215+ res.append(toUTF8String( array.get(0 , ar.elementType)). asInstanceOf [ UTF8String ] )
246216 var i = 1
247217 while (i < array.numElements) {
248218 res.append(" , " )
249- writeElemToBuffer( array.get(i, ar.elementType), res )
219+ res.append(toUTF8String( array.get(i, ar.elementType)). asInstanceOf [ UTF8String ] )
250220 i += 1
251221 }
252222 }
253223 res.append(" ]" )
254- UTF8String .fromString( res.toString)
224+ res.toUTF8String
255225 })
256226 case _ => buildCast[Any ](_, o => UTF8String .fromString(o.toString))
257227 }
@@ -709,7 +679,7 @@ case class Cast(child: Expression, dataType: DataType, timeZoneId: Option[String
709679 s """
710680 | $bufferClass $bufferTerm = new $bufferClass();
711681 | $writeArrayToBuffer( $c, $bufferTerm);
712- | $evPrim = UTF8String.fromString( $bufferTerm.toString() );
682+ | $evPrim = $bufferTerm.toUTF8String( );
713683 """ .stripMargin
714684 }
715685 case _ =>
0 commit comments