@@ -296,33 +296,14 @@ class JDBCSuite extends SparkFunSuite
296296 // The older versions of spark have this kind of bugs in parquet data source.
297297 val df1 = sql(" SELECT * FROM foobar WHERE NOT (THEID != 2 AND NAME != 'mary')" )
298298 val df2 = sql(" SELECT * FROM foobar WHERE NOT (THEID != 2) OR NOT (NAME != 'mary')" )
299- val df3 = sql(" SELECT * FROM foobar WHERE (THEID > 0 AND NAME = 'mary') OR (NAME = 'fred')" )
300- val df4 = sql(" SELECT * FROM foobar " +
301- " WHERE (THEID > 0 AND TRIM(NAME) = 'mary') OR (NAME = 'fred')" )
302- val df5 = sql(" SELECT * FROM foobar " +
303- " WHERE THEID > 0 AND TRIM(NAME) = 'mary' AND LENGTH(NAME) > 3" )
304- val df6 = sql(" SELECT * FROM foobar " +
305- " WHERE THEID < 0 OR NAME = 'mary' OR NAME = 'fred'" )
306- val df7 = sql(" SELECT * FROM foobar " +
307- " WHERE THEID < 0 OR TRIM(NAME) = 'mary' OR NAME = 'fred'" )
308- val df8 = sql(" SELECT * FROM foobar " +
309- " WHERE NOT((THEID < 0 OR NAME != 'mary') AND (THEID != 1 OR NAME != 'fred'))" )
310- val df9 = sql(" SELECT * FROM foobar " +
311- " WHERE NOT((THEID < 0 OR NAME != 'mary') AND (THEID != 1 OR TRIM(NAME) != 'fred'))" )
312- val df10 = sql(" SELECT * FROM foobar " +
313- " WHERE (NOT(THEID < 0 OR TRIM(NAME) != 'mary')) OR (THEID = 1 AND NAME = 'fred')" )
314299
315300 assert(df1.collect.toSet === Set (Row (" mary" , 2 )))
316301 assert(df2.collect.toSet === Set (Row (" mary" , 2 )))
317- assert(df3.collect.toSet === Set (Row (" fred" , 1 ), Row (" mary" , 2 )))
318- assert(df4.collect.toSet === Set (Row (" fred" , 1 ), Row (" mary" , 2 )))
319- assert(df5.collect.toSet === Set (Row (" mary" , 2 )))
320- assert(df6.collect.toSet === Set (Row (" fred" , 1 ), Row (" mary" , 2 )))
321- assert(df7.collect.toSet === Set (Row (" fred" , 1 ), Row (" mary" , 2 )))
322- assert(df8.collect.toSet === Set (Row (" fred" , 1 ), Row (" mary" , 2 )))
323- assert(df9.collect.toSet === Set (Row (" fred" , 1 ), Row (" mary" , 2 )))
324- assert(df10.collect.toSet === Set (Row (" fred" , 1 ), Row (" mary" , 2 )))
325302
303+ // SPARK-22548: Incorrect nested AND expression pushed down to JDBC data source
304+ val df3 = sql(" SELECT * FROM foobar " +
305+ " WHERE (THEID > 0 AND TRIM(NAME) = 'mary') OR (NAME = 'fred')" )
306+ assert(df3.collect.toSet === Set (Row (" fred" , 1 ), Row (" mary" , 2 )))
326307
327308 def checkNotPushdown (df : DataFrame ): DataFrame = {
328309 val parentPlan = df.queryExecution.executedPlan
0 commit comments