Skip to content

Commit a7ef79e

Browse files
committed
For comments.
1 parent b0da6fc commit a7ef79e

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/JDBCRDD.scala

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -318,17 +318,21 @@ private[sql] class JDBCRDD(
318318
/**
319319
* `filters`, but as a WHERE clause suitable for injection into a SQL query.
320320
*/
321-
private val filterWhereClause: Seq[Option[String]] = filters.map(JDBCRDD.compileFilter)
321+
private val filterWhereClause: String =
322+
filters.map(JDBCRDD.compileFilter).flatten.mkString(" AND ")
322323

323324
/**
324325
* A WHERE clause representing both `filters`, if any, and the current partition.
325326
*/
326327
private def getWhereClause(part: JDBCPartition): String = {
327-
val w = filterWhereClause.+:(Option(part.whereClause)).flatten.mkString(" AND ")
328-
if (!w.isEmpty) {
329-
"WHERE " + w
328+
if (part.whereClause != null && filterWhereClause.length > 0) {
329+
"WHERE " + filterWhereClause + " AND " + part.whereClause
330+
} else if (part.whereClause != null) {
331+
"WHERE " + part.whereClause
332+
} else if (filterWhereClause.length > 0) {
333+
"WHERE " + filterWhereClause
330334
} else {
331-
w
335+
""
332336
}
333337
}
334338

sql/core/src/test/scala/org/apache/spark/sql/jdbc/JDBCSuite.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ class JDBCSuite extends SparkFunSuite
190190
assert(stripSparkFilter(sql("SELECT * FROM foobar WHERE NAME IN ('mary', 'fred')"))
191191
.collect().size == 2)
192192
assert(stripSparkFilter(sql("SELECT * FROM foobar WHERE NAME NOT IN ('fred')"))
193-
.collect().size === 2)
193+
.collect().size == 2)
194194
assert(stripSparkFilter(sql("SELECT * FROM foobar WHERE THEID = 1 OR NAME = 'mary'"))
195195
.collect().size == 2)
196196
assert(stripSparkFilter(sql("SELECT * FROM foobar WHERE THEID = 1 OR NAME = 'mary' "
@@ -473,6 +473,7 @@ class JDBCSuite extends SparkFunSuite
473473
=== "(NOT (col1 IN ('mno', 'pqr')))")
474474
assert(doCompileFilter(IsNull("col1")) === "col1 IS NULL")
475475
assert(doCompileFilter(IsNotNull("col1")) === "col1 IS NOT NULL")
476+
assert(doCompileFilter(And(EqualNullSafe("col0", "abc"), EqualTo("col1", "def"))) === "")
476477
}
477478

478479
test("Dialect unregister") {

0 commit comments

Comments
 (0)