[SPARK-26652][SQL] Remove fromJSON and fromString from Literal

## What changes were proposed in this pull request?

The `fromString` and `fromJSON` methods of the `Literal` object are removed because they are not used.

Closes #23596

Closes #23603 from MaxGekk/remove-literal-fromstring.

Authored-by: Maxim Gekk <maxim.gekk@databricks.com>
Signed-off-by: Hyukjin Kwon <gurwls223@apache.org>
This commit is contained in:
Maxim Gekk 2019-01-22 02:24:12 +08:00 committed by Hyukjin Kwon
parent 9a30e23211
commit 4c1cd809f8
2 changed files with 0 additions and 55 deletions

View file

@ -126,40 +126,6 @@ object Literal {
def fromObject(obj: Any, objType: DataType): Literal = new Literal(obj, objType)
def fromObject(obj: Any): Literal = new Literal(obj, ObjectType(obj.getClass))
def fromJSON(json: JValue): Literal = {
val dataType = DataType.parseDataType(json \ "dataType")
json \ "value" match {
case JNull => Literal.create(null, dataType)
case JString(str) => fromString(str, dataType)
case other => sys.error(s"$other is not a valid Literal json value")
}
}
/**
* Constructs a Literal from a String
*/
def fromString(str: String, dataType: DataType): Literal = {
val value = dataType match {
case BooleanType => str.toBoolean
case ByteType => str.toByte
case ShortType => str.toShort
case IntegerType => str.toInt
case LongType => str.toLong
case FloatType => str.toFloat
case DoubleType => str.toDouble
case StringType => UTF8String.fromString(str)
case DateType => java.sql.Date.valueOf(str)
case TimestampType => java.sql.Timestamp.valueOf(str)
case CalendarIntervalType => CalendarInterval.fromString(str)
case t: DecimalType =>
val d = Decimal(str)
assert(d.changePrecision(t.precision, t.scale))
d
case _ => null
}
Literal.create(value, dataType)
}
def create(v: Any, dataType: DataType): Literal = {
Literal(CatalystTypeConverters.convertToCatalyst(v), dataType)
}

View file

@ -228,25 +228,4 @@ class LiteralExpressionSuite extends SparkFunSuite with ExpressionEvalHelper {
checkEvaluation(Literal('\u0000'), "\u0000")
checkEvaluation(Literal.create('\n'), "\n")
}
test("fromString converts String/DataType input correctly") {
checkEvaluation(Literal.fromString(false.toString, BooleanType), false)
checkEvaluation(Literal.fromString(null, NullType), null)
checkEvaluation(Literal.fromString(Int.MaxValue.toByte.toString, ByteType), Int.MaxValue.toByte)
checkEvaluation(Literal.fromString(Short.MaxValue.toShort.toString, ShortType), Short.MaxValue
.toShort)
checkEvaluation(Literal.fromString(Int.MaxValue.toString, IntegerType), Int.MaxValue)
checkEvaluation(Literal.fromString(Long.MaxValue.toString, LongType), Long.MaxValue)
checkEvaluation(Literal.fromString(Float.MaxValue.toString, FloatType), Float.MaxValue)
checkEvaluation(Literal.fromString(Double.MaxValue.toString, DoubleType), Double.MaxValue)
checkEvaluation(Literal.fromString("1.23456", DecimalType(10, 5)), Decimal(1.23456))
checkEvaluation(Literal.fromString("Databricks", StringType), "Databricks")
val dateString = "1970-01-01"
checkEvaluation(Literal.fromString(dateString, DateType), java.sql.Date.valueOf(dateString))
val timestampString = "0000-01-01 00:00:00"
checkEvaluation(Literal.fromString(timestampString, TimestampType),
java.sql.Timestamp.valueOf(timestampString))
val calInterval = new CalendarInterval(1, 1)
checkEvaluation(Literal.fromString(calInterval.toString, CalendarIntervalType), calInterval)
}
}