Skip to content

Commit 6d2580a

Browse files
committed
Consider top level and/or precedence for parenthesis
1 parent d681742 commit 6d2580a

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ private[sql] class JDBCRDD(
305305
* `filters`, but as a WHERE clause suitable for injection into a SQL query.
306306
*/
307307
private val filterWhereClause: String =
308-
filters.flatMap(JDBCRDD.compileFilter).mkString(" AND ")
308+
filters.flatMap(JDBCRDD.compileFilter).map(p => s"($p)").mkString(" AND ")
309309

310310
/**
311311
* A WHERE clause representing both `filters`, if any, and the current partition.

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,10 @@ class JDBCSuite extends SparkFunSuite
233233
assert(checkPushdown(sql("SELECT * FROM foobar WHERE NAME LIKE 'fr%'")).collect().size == 1)
234234
assert(checkPushdown(sql("SELECT * FROM foobar WHERE NAME LIKE '%ed'")).collect().size == 1)
235235
assert(checkPushdown(sql("SELECT * FROM foobar WHERE NAME LIKE '%re%'")).collect().size == 1)
236+
val orPrecedenceSql =
237+
"SELECT * FROM foobar WHERE (NAME = 'fred' OR THEID = 100) AND THEID < 1"
238+
assert(checkPushdown(sql(orPrecedenceSql)).collect().size == 0)
239+
236240
assert(checkPushdown(sql("SELECT * FROM nulltypes WHERE A IS NULL")).collect().size == 1)
237241
assert(checkPushdown(sql("SELECT * FROM nulltypes WHERE A IS NOT NULL")).collect().size == 0)
238242

0 commit comments

Comments
 (0)