Skip to content

Commit

Permalink
Revert "[SPARK-47539][SQL] Make the return value of method `castToStr…
Browse files Browse the repository at this point in the history
…ing` be `Any => UTF8String`"

This reverts commit b341787.
  • Loading branch information
MaxGekk committed Mar 25, 2024
1 parent b341787 commit 3ca26bc
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 141 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ case class ToPrettyString(child: Expression, timeZoneId: Option[String] = None)

override protected def useHexFormatForBinary: Boolean = true

private[this] lazy val castFunc: Any => UTF8String = castToString(child.dataType)
private[this] lazy val castFunc: Any => Any = castToString(child.dataType)

override def eval(input: InternalRow): Any = {
val v = child.eval(input)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,10 @@ trait ToStringBase { self: UnaryExpression with TimeZoneAwareExpression =>
protected def useHexFormatForBinary: Boolean

// Makes the function accept Any type input by doing `asInstanceOf[T]`.
@inline private def acceptAny[T](func: T => UTF8String): Any => UTF8String =
i => func(i.asInstanceOf[T])
@inline private def acceptAny[T](func: T => Any): Any => Any = i => func(i.asInstanceOf[T])

// Returns a function to convert a value to pretty string. The function assumes input is not null.
protected final def castToString(from: DataType): Any => UTF8String = from match {
protected final def castToString(from: DataType): Any => Any = from match {
case CalendarIntervalType =>
acceptAny[CalendarInterval](i => UTF8String.fromString(i.toString))
case BinaryType if useHexFormatForBinary =>
Expand All @@ -73,7 +72,7 @@ trait ToStringBase { self: UnaryExpression with TimeZoneAwareExpression =>
if (array.isNullAt(0)) {
if (nullString.nonEmpty) builder.append(nullString)
} else {
builder.append(toUTF8String(array.get(0, et)))
builder.append(toUTF8String(array.get(0, et)).asInstanceOf[UTF8String])
}
var i = 1
while (i < array.numElements()) {
Expand All @@ -82,7 +81,7 @@ trait ToStringBase { self: UnaryExpression with TimeZoneAwareExpression =>
if (nullString.nonEmpty) builder.append(" " + nullString)
} else {
builder.append(" ")
builder.append(toUTF8String(array.get(i, et)))
builder.append(toUTF8String(array.get(i, et)).asInstanceOf[UTF8String])
}
i += 1
}
Expand All @@ -99,24 +98,25 @@ trait ToStringBase { self: UnaryExpression with TimeZoneAwareExpression =>
val valueArray = map.valueArray()
val keyToUTF8String = castToString(kt)
val valueToUTF8String = castToString(vt)
builder.append(keyToUTF8String(keyArray.get(0, kt)))
builder.append(keyToUTF8String(keyArray.get(0, kt)).asInstanceOf[UTF8String])
builder.append(" ->")
if (valueArray.isNullAt(0)) {
if (nullString.nonEmpty) builder.append(" " + nullString)
} else {
builder.append(" ")
builder.append(valueToUTF8String(valueArray.get(0, vt)))
builder.append(valueToUTF8String(valueArray.get(0, vt)).asInstanceOf[UTF8String])
}
var i = 1
while (i < map.numElements()) {
builder.append(", ")
builder.append(keyToUTF8String(keyArray.get(i, kt)))
builder.append(keyToUTF8String(keyArray.get(i, kt)).asInstanceOf[UTF8String])
builder.append(" ->")
if (valueArray.isNullAt(i)) {
if (nullString.nonEmpty) builder.append(" " + nullString)
} else {
builder.append(" ")
builder.append(valueToUTF8String(valueArray.get(i, vt)))
builder.append(valueToUTF8String(valueArray.get(i, vt))
.asInstanceOf[UTF8String])
}
i += 1
}
Expand All @@ -134,7 +134,7 @@ trait ToStringBase { self: UnaryExpression with TimeZoneAwareExpression =>
if (row.isNullAt(0)) {
if (nullString.nonEmpty) builder.append(nullString)
} else {
builder.append(toUTF8StringFuncs(0)(row.get(0, st(0))))
builder.append(toUTF8StringFuncs(0)(row.get(0, st(0))).asInstanceOf[UTF8String])
}
var i = 1
while (i < row.numFields) {
Expand All @@ -143,7 +143,7 @@ trait ToStringBase { self: UnaryExpression with TimeZoneAwareExpression =>
if (nullString.nonEmpty) builder.append(" " + nullString)
} else {
builder.append(" ")
builder.append(toUTF8StringFuncs(i)(row.get(i, st(i))))
builder.append(toUTF8StringFuncs(i)(row.get(i, st(i))).asInstanceOf[UTF8String])
}
i += 1
}
Expand All @@ -162,7 +162,7 @@ trait ToStringBase { self: UnaryExpression with TimeZoneAwareExpression =>
IntervalUtils.toDayTimeIntervalString(i, ANSI_STYLE, startField, endField)))
case _: DecimalType if useDecimalPlainString =>
acceptAny[Decimal](d => UTF8String.fromString(d.toPlainString))
case _: StringType => acceptAny[UTF8String](identity[UTF8String])
case _: StringType => identity
case _ => o => UTF8String.fromString(o.toString)
}

Expand Down

This file was deleted.

0 comments on commit 3ca26bc

Please sign in to comment.