Github user gatorsmile commented on a diff in the pull request:

    https://github.com/apache/spark/pull/21379#discussion_r195313083
  
    --- Diff: sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala 
---
    @@ -1206,4 +1211,47 @@ class JDBCSuite extends SparkFunSuite
         }.getMessage
         assert(errMsg.contains("Statement was canceled or the session timed 
out"))
       }
    +
    +  test("SPARK-24327 verify and normalize a partition column based on a 
JDBC resolved schema") {
    +    def testJdbcParitionColumn(partColName: String, expectedColumnName: 
String): Unit = {
    +      val df = spark.read.format("jdbc")
    +        .option("url", urlWithUserAndPass)
    +        .option("dbtable", "TEST.PARTITION")
    +        .option("partitionColumn", partColName)
    +        .option("lowerBound", 1)
    +        .option("upperBound", 4)
    +        .option("numPartitions", 3)
    +        .load()
    +
    +      val quotedPrtColName = 
testH2Dialect.quoteIdentifier(expectedColumnName)
    +      df.logicalPlan match {
    +        case LogicalRelation(JDBCRelation(_, parts, _), _, _, _) =>
    +          val whereClauses = 
parts.map(_.asInstanceOf[JDBCPartition].whereClause).toSet
    +          assert(whereClauses === Set(
    +            s"$quotedPrtColName < 2 or $quotedPrtColName is null",
    +            s"$quotedPrtColName >= 2 AND $quotedPrtColName < 3",
    +            s"$quotedPrtColName >= 3"))
    +      }
    +    }
    +
    +    testJdbcParitionColumn("THEID", "THEID")
    +    testJdbcParitionColumn("\"THEID\"", "THEID")
    +    withSQLConf("spark.sql.caseSensitive" -> "false") {
    +      testJdbcParitionColumn("ThEiD", "THEID")
    +    }
    +    testJdbcParitionColumn("THE ID", "THE ID")
    +
    +    def testIncorrectJdbcPartitionColumn(partColName: String): Unit = {
    +      val errMsg = intercept[AnalysisException] {
    +        testJdbcParitionColumn(partColName, "THEID")
    +      }.getMessage
    +      assert(errMsg.contains(s"User-defined partition column $partColName 
not found " +
    +        "in the JDBC relation:"))
    +    }
    +
    +    testIncorrectJdbcPartitionColumn("NoExistingColumn")
    +    withSQLConf("spark.sql.caseSensitive" -> "true") {
    --- End diff --
    
    `SQLConf.CASE_SENSITIVE.key`


---

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

Reply via email to