Yang Jie created SPARK-52945:
--------------------------------

             Summary: Test failure related to 
CastSuiteBase#checkInvalidCastFromNumericType
                 Key: SPARK-52945
                 URL: https://issues.apache.org/jira/browse/SPARK-52945
             Project: Spark
          Issue Type: Bug
          Components: SQL
    Affects Versions: 4.0.0, 3.5.6, 3.4.4, 4.1.0
            Reporter: Yang Jie


There is no valid assertions are present in the 
CastSuiteBase#checkInvalidCastFromNumericType method:

 

 
{code:java}
protected def checkInvalidCastFromNumericType(to: DataType): Unit = {
    cast(1.toByte, to).checkInputDataTypes() ==
      DataTypeMismatch(
        errorSubClass = "CAST_WITH_FUNC_SUGGESTION",
        messageParameters = Map(
          "srcType" -> toSQLType(Literal(1.toByte).dataType),
          "targetType" -> toSQLType(to),
          "functionNames" -> "`DATE_FROM_UNIX_DATE`"
        )
      )
    cast(1.toShort, to).checkInputDataTypes() ==
      DataTypeMismatch(
        errorSubClass = "CAST_WITH_FUNC_SUGGESTION",
        messageParameters = Map(
          "srcType" -> toSQLType(Literal(1.toShort).dataType),
          "targetType" -> toSQLType(to),
          "functionNames" -> "`DATE_FROM_UNIX_DATE`"
        )
      )
    cast(1, to).checkInputDataTypes() ==
      DataTypeMismatch(
        errorSubClass = "CAST_WITH_FUNC_SUGGESTION",
        messageParameters = Map(
          "srcType" -> toSQLType(Literal(1).dataType),
          "targetType" -> toSQLType(to),
          "functionNames" -> "`DATE_FROM_UNIX_DATE`"
        )
      )
    cast(1L, to).checkInputDataTypes() ==
      DataTypeMismatch(
        errorSubClass = "CAST_WITH_FUNC_SUGGESTION",
        messageParameters = Map(
          "srcType" -> toSQLType(Literal(1L).dataType),
          "targetType" -> toSQLType(to),
          "functionNames" -> "`DATE_FROM_UNIX_DATE`"
        )
      )
    cast(1.0.toFloat, to).checkInputDataTypes() ==
      DataTypeMismatch(
        errorSubClass = "CAST_WITH_FUNC_SUGGESTION",
        messageParameters = Map(
          "srcType" -> toSQLType(Literal(1.0.toFloat).dataType),
          "targetType" -> toSQLType(to),
          "functionNames" -> "`DATE_FROM_UNIX_DATE`"
        )
      )
    cast(1.0, to).checkInputDataTypes() ==
      DataTypeMismatch(
        errorSubClass = "CAST_WITH_FUNC_SUGGESTION",
        messageParameters = Map(
          "srcType" -> toSQLType(Literal(1.0).dataType),
          "targetType" -> toSQLType(to),
          "functionNames" -> "`DATE_FROM_UNIX_DATE`"
        )
      )
  } {code}
 

_After applying the fix, the code is as follows:_

 
{code:java}
protected def checkInvalidCastFromNumericType(to: DataType): Unit = {
    assert(cast(1.toByte, to).checkInputDataTypes() ==
      DataTypeMismatch(
        errorSubClass = "CAST_WITH_FUNC_SUGGESTION",
        messageParameters = Map(
          "srcType" -> toSQLType(Literal(1.toByte).dataType),
          "targetType" -> toSQLType(to),
          "functionNames" -> "`DATE_FROM_UNIX_DATE`"
        )
      )
    )
    assert(cast(1.toShort, to).checkInputDataTypes() ==
      DataTypeMismatch(
        errorSubClass = "CAST_WITH_FUNC_SUGGESTION",
        messageParameters = Map(
          "srcType" -> toSQLType(Literal(1.toShort).dataType),
          "targetType" -> toSQLType(to),
          "functionNames" -> "`DATE_FROM_UNIX_DATE`"
        )
      )
    )
    assert(cast(1, to).checkInputDataTypes() ==
      DataTypeMismatch(
        errorSubClass = "CAST_WITH_FUNC_SUGGESTION",
        messageParameters = Map(
          "srcType" -> toSQLType(Literal(1).dataType),
          "targetType" -> toSQLType(to),
          "functionNames" -> "`DATE_FROM_UNIX_DATE`"
        )
      )
    )
    assert(cast(1L, to).checkInputDataTypes() ==
      DataTypeMismatch(
        errorSubClass = "CAST_WITH_FUNC_SUGGESTION",
        messageParameters = Map(
          "srcType" -> toSQLType(Literal(1L).dataType),
          "targetType" -> toSQLType(to),
          "functionNames" -> "`DATE_FROM_UNIX_DATE`"
        )
      )
    )
    assert(cast(1.0.toFloat, to).checkInputDataTypes() ==
      DataTypeMismatch(
        errorSubClass = "CAST_WITH_FUNC_SUGGESTION",
        messageParameters = Map(
          "srcType" -> toSQLType(Literal(1.0.toFloat).dataType),
          "targetType" -> toSQLType(to),
          "functionNames" -> "`DATE_FROM_UNIX_DATE`"
        )
      )
    )
    assert(cast(1.0, to).checkInputDataTypes() ==
      DataTypeMismatch(
        errorSubClass = "CAST_WITH_FUNC_SUGGESTION",
        messageParameters = Map(
          "srcType" -> toSQLType(Literal(1.0).dataType),
          "targetType" -> toSQLType(to),
          "functionNames" -> "`DATE_FROM_UNIX_DATE`"
        )
      )
    )
  } {code}
 

_At this point, testing the {{{}CastWithAnsiOffSuite{}}}, 
{{{}CastWithAnsiOnSuite{}}}, and {{TryCastSuite}} will result in failures 
similar to the following:_

 

build/sbt clean "catalyst/testOnly 
org.apache.spark.sql.catalyst.expressions.CastWithAnsiOffSuite"

 
{code:java}
[info] - SPARK-16729 type checking for casting to date type *** FAILED *** (12 
milliseconds)
[info]   DataTypeMismatch("CAST_WITHOUT_SUGGESTION", Map("srcType" -> 
""TINYINT"", "targetType" -> ""DATE"")) did not equal 
DataTypeMismatch("CAST_WITH_FUNC_SUGGESTION", Map("srcType" -> ""TINYINT"", 
"targetType" -> ""DATE"", "functionNames" -> "`DATE_FROM_UNIX_DATE`")) 
(CastSuiteBase.scala:549)
[info]   Analysis:
[info]   TypeCheckResult$DataTypeMismatch(errorSubClass: 
"CAST_WITH[OUT]_SUGGESTION" -> "CAST_WITH[_FUNC]_SUGGESTION", 
messageParameters: Map("functionNames": -> "`DATE_FROM_UNIX_DATE`"))
[info]   org.scalatest.exceptions.TestFailedException:
[info]   at 
org.scalatest.Assertions.newAssertionFailedException(Assertions.scala:472)
[info]   at 
org.scalatest.Assertions.newAssertionFailedException$(Assertions.scala:471)
[info]   at 
org.scalatest.Assertions$.newAssertionFailedException(Assertions.scala:1231)
[info]   at 
org.scalatest.Assertions$AssertionsHelper.macroAssert(Assertions.scala:1295)
[info]   at 
org.apache.spark.sql.catalyst.expressions.CastSuiteBase.checkInvalidCastFromNumericType(CastSuiteBase.scala:549)
[info]   at 
org.apache.spark.sql.catalyst.expressions.CastSuiteBase.$anonfun$new$97(CastSuiteBase.scala:623)
...
[info] - disallow type conversions between Numeric types and Timestamp without 
time zone type *** FAILED *** (0 milliseconds)
[info]   DataTypeMismatch("CAST_WITHOUT_SUGGESTION", Map("srcType" -> 
""TINYINT"", "targetType" -> ""TIMESTAMP_NTZ"")) did not equal 
DataTypeMismatch("CAST_WITH_FUNC_SUGGESTION", Map("srcType" -> ""TINYINT"", 
"targetType" -> ""TIMESTAMP_NTZ"", "functionNames" -> "`DATE_FROM_UNIX_DATE`")) 
(CastSuiteBase.scala:549)
[info]   Analysis:
[info]   TypeCheckResult$DataTypeMismatch(errorSubClass: 
"CAST_WITH[OUT]_SUGGESTION" -> "CAST_WITH[_FUNC]_SUGGESTION", 
messageParameters: Map("functionNames": -> "`DATE_FROM_UNIX_DATE`"))
[info]   org.scalatest.exceptions.TestFailedException:
[info]   at 
org.scalatest.Assertions.newAssertionFailedException(Assertions.scala:472)
[info]   at 
org.scalatest.Assertions.newAssertionFailedException$(Assertions.scala:471)
[info]   at 
org.scalatest.Assertions$.newAssertionFailedException(Assertions.scala:1231)
[info]   at 
org.scalatest.Assertions$AssertionsHelper.macroAssert(Assertions.scala:1295)
[info]   at 
org.apache.spark.sql.catalyst.expressions.CastSuiteBase.checkInvalidCastFromNumericType(CastSuiteBase.scala:549)
[info]   at 
org.apache.spark.sql.catalyst.expressions.CastSuiteBase.$anonfun$new$211(CastSuiteBase.scala:1007)
 {code}
 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org
For additional commands, e-mail: issues-h...@spark.apache.org

Reply via email to