Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
1.6.2, 2.0.0
Description
Consider the following example:
sc.parallelize(Seq(128, 256)).toDF("int_col").registerTempTable("mytable") // The following query should return an empty result set because the `IN` filter condition is always false for this single-row table. val withoutGroupBy = sqlContext.sql(""" SELECT 'foo' FROM mytable WHERE int_col == 0 """) assert(withoutGroupBy.collect().isEmpty, "original query returned wrong answer") // After adding a 'GROUP BY 1' the query result should still be empty because we'd be grouping an empty table: val withGroupBy = sqlContext.sql(""" SELECT 'foo' FROM mytable WHERE int_col == 0 GROUP BY 1 """) assert(withGroupBy.collect().isEmpty, "adding GROUP BY resulted in wrong answer")
Here, this fails the second assertion by returning a single row. It appears that running group by 1 where column 1 is a constant causes filter conditions to be ignored.
Both PostgreSQL and SQLite return empty result sets for the query containing the GROUP BY.