HAVING without GROUP BY
HAVING without GROUP BY is treated as a global aggregate.
Type of change: Property/Spark SQL changes
Spark 1.6 - 2,3
HAVING without GROUP BY is treated as WHERE. For example, SELECT 1 FROM range(10) HAVING true
is executed as SELECT 1 FROM range(10) WHERE true
, and and returns 10 rows.
Spark 2.4
HAVING without GROUP BY is treated as a global aggregate. For example, SELECT 1 FROM range(10) HAVING true
returns one row, instead of 10, as in the previous version.
Action Required
Check the logic where having and group by is used.
To restore previous behavior,
set spark.sql.legacy.parser.havingWithoutGroupByAsWhere=true
.