sunxiaoguang commented on code in PR #49453:
URL: https://github.com/apache/spark/pull/49453#discussion_r1918230743


##########
connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/MySQLIntegrationSuite.scala:
##########
@@ -241,6 +241,56 @@ class MySQLIntegrationSuite extends 
DockerJDBCIntegrationV2Suite with V2JDBCTest
     assert(rows10(0).getString(0) === "amy")
     assert(rows10(1).getString(0) === "alex")
   }
+
+  test("SPARK-50793: MySQL JDBC Connector failed to cast some types") {
+    val tableName = catalogName + ".test_cast_function"
+    withTable(tableName) {
+      val stringValue = "0"
+      val stringLiteral = "'0'"
+      val longValue = 0L
+      val binaryValue = Array[Byte](0x30)
+      val binaryLiteral = "x'30'"
+      val doubleValue = 0.0
+      val doubleLiteral = "0.0"
+      // CREATE table to use types defined in Spark SQL
+      sql(s"""CREATE TABLE $tableName (
+        string_col STRING,
+        long_col LONG,
+        binary_col BINARY,
+        double_col DOUBLE
+      )""")
+      sql(
+        s"INSERT INTO $tableName VALUES($stringLiteral, $longValue, 
$binaryLiteral, $doubleValue)")
+
+      def testCast(castType: String, sourceCol: String, targetCol: String,
+                   sourceValue: Any, targetValue: Any): Unit = {
+        val sql =
+          s"""SELECT $sourceCol, CAST($sourceCol AS $castType) FROM $tableName
+             |WHERE CAST($sourceCol AS $castType) = $targetCol""".stripMargin
+        val df = spark.sql(sql)
+        checkFilterPushed(df)
+        val rows = df.collect()

Review Comment:
   Got it, I made some changes to use checkAnswer now. But there is another 
issue with schema, it looks like pretty hard to compare whole schema structure 
as the Metadata are flexible for different combinations of the test cases. So I 
just extracted the dataType of StructField in df.schema and checked the data 
types only.   
   
   PTAL, thanks.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


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

Reply via email to