Francisco Miguel Biete Banon created SPARK-26800:
----------------------------------------------------

             Summary: JDBC - MySQL nullable option is ignored
                 Key: SPARK-26800
                 URL: https://issues.apache.org/jira/browse/SPARK-26800
             Project: Spark
          Issue Type: Bug
          Components: Spark Core
    Affects Versions: 2.4.0
            Reporter: Francisco Miguel Biete Banon


Spark 2.4.0
MySQL 5.7.21 (docker official MySQL image running with default config)

Writing a dataframe with optionally null fields result in a table with NOT NULL 
attributes in MySQL.

{code:java}
import org.apache.spark.sql.types._
import org.apache.spark.sql.{Row, SaveMode}
import java.sql.Timestamp

val data = Seq[Row](Row(1, null, "Boston"), Row(2, null, "New York"))
val schema = StructType(
StructField("id", IntegerType) ::
StructField("when", TimestampType, true) ::
StructField("city", StringType) :: Nil)
println(schema.toDDL)

val df = spark.createDataFrame(spark.sparkContext.parallelize(data), schema)

df.write.mode(SaveMode.Overwrite).jdbc(jdbcUrl, "temp_bug", 
jdbcProperties){code}

Produces

{code}
CREATE TABLE `temp_bug` (
  `id` int(11) DEFAULT NULL,
  `when` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE 
CURRENT_TIMESTAMP,
  `city` text
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
{code}

I would expect "when" column to be defined as nullable.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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

Reply via email to