Uploaded image for project: 'Spark'
  1. Spark
  2. SPARK-36076

[SQL] ArrayIndexOutOfBounds in CAST string to timestamp

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 3.0.3, 3.1.1, 3.1.2
    • 3.1.3, 3.0.4
    • SQL
    • None

    Description

      I discovered this bug during some fuzz testing.

            ____              __
           / __/__  ___ _____/ /__
          _\ \/ _ \/ _ `/ __/  '_/
         /___/ .__/\_,_/_/ /_/\_\   version 3.1.1
            /_/
               
      Using Scala version 2.12.10 (OpenJDK 64-Bit Server VM, Java 1.8.0_282)
      Type in expressions to have them evaluated.
      Type :help for more information.scala> 
      
      scala> import org.apache.spark.sql.types.DataTypes
      
      scala> val df = Seq(":8:434421+ 98:38").toDF("c0")
      df: org.apache.spark.sql.DataFrame = [c0: string]
      
      scala> val df2 = df.withColumn("c1", col("c0").cast(DataTypes.TimestampType))
      df2: org.apache.spark.sql.DataFrame = [c0: string, c1: timestamp]
      
      scala> df2.show
      java.lang.ArrayIndexOutOfBoundsException: 9
        at org.apache.spark.sql.catalyst.util.DateTimeUtils$.stringToTimestamp(DateTimeUtils.scala:328)
        at org.apache.spark.sql.catalyst.expressions.CastBase.$anonfun$castToTimestamp$2(Cast.scala:455)
        at org.apache.spark.sql.catalyst.expressions.CastBase.buildCast(Cast.scala:295)
        at org.apache.spark.sql.catalyst.expressions.CastBase.$anonfun$castToTimestamp$1(Cast.scala:451)
        at org.apache.spark.sql.catalyst.expressions.CastBase.nullSafeEval(Cast.scala:840)
        at org.apache.spark.sql.catalyst.expressions.UnaryExpression.eval(Expression.scala:476)
       

      Attachments

        Activity

          People

            dc-heros dgd_contributor
            andygrove Andy Grove
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: