sunxiaoguang commented on code in PR #49452: URL: https://github.com/apache/spark/pull/49452#discussion_r1912447449
########## connector/docker-integration-tests/src/test/scala/org/apache/spark/sql/jdbc/v2/V2JDBCTest.scala: ########## @@ -986,4 +986,18 @@ private[v2] trait V2JDBCTest extends SharedSparkSession with DockerIntegrationFu test("scan with filter push-down with date time functions") { testDatetime(s"$catalogAndNamespace.${caseConvert("datetime")}") } + + test("SPARK-50792 Format binary data as a binary literal in JDBC.") { + withTable(s"$catalogName.test_binary_literal") { + // Create a table with binary column + val binary = "X'123456'" + val tableName = "test_binary_literal" + + sql(s"CREATE TABLE $catalogName.$tableName (binary_col BINARY)") + sql(s"INSERT INTO $catalogName.$tableName VALUES ($binary)") + + val select = s"SELECT * FROM $catalogName.$tableName WHERE binary_col = $binary" + assert(spark.sql(select).collect().length === 1, s"Binary literal test failed: $select") + } + } Review Comment: Spark SQL like this: SELECT * FROM test_binary_literal WHERE binary_col =x'010203' Would have to be translated to Oracle in this way: SELECT * FROM test_binary_literal WHERE DBMS_LOB.COMPARE(binary_col, HEXTORAW('010203')) = 0 This is impossible with existing V2ExpressionSQLBuilder ```scala return switch (name) { ...... case "=", "<>", "<=>", "<", "<=", ">", ">=" -> visitBinaryComparison(name, inputToSQL(e.children()[0]), inputToSQL(e.children()[1])); ...... protected String visitBinaryComparison(String name, String l, String r) { if (name.equals("<=>")) { return "((" + l + " IS NOT NULL AND " + r + " IS NOT NULL AND " + l + " = " + r + ") " + "OR (" + l + " IS NULL AND " + r + " IS NULL))"; } return l + " " + name + " " + r; } protected String inputToSQL(Expression input) { if (input.children().length > 1) { return "(" + build(input) + ")"; } else { return build(input); } } ``` -- 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