MaxGekk commented on code in PR #45622:
URL: https://github.com/apache/spark/pull/45622#discussion_r1535193927
##########
sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/AnalysisErrorSuite.scala:
##########
@@ -295,10 +295,50 @@ class AnalysisErrorSuite extends AnalysisTest with
DataTypeErrorsBase {
"aggregate(array(1, 2, 3), 0, (acc, x) -> acc + x) FILTER (WHERE c >
1)", 7, 76)))
}
- errorTest(
- "non-deterministic filter predicate in aggregate functions",
- CatalystSqlParser.parsePlan("SELECT count(a) FILTER (WHERE rand(int(c)) >
1) FROM TaBlE2"),
- "FILTER expression is non-deterministic, it cannot be used in aggregate
functions" :: Nil)
+ test("SPARK-47256: non deterministic FILTER expression in an aggregate
function") {
+ val plan =
+ CatalystSqlParser.parsePlan("SELECT count(a) FILTER (WHERE rand(int(c))
> 1) FROM TaBlE2")
Review Comment:
> However, triggering public API in this test suite seems like too much
setup work ...
Could you move the test queries to `group-by-filter.sql`, and regenerate the
golden file.
##########
common/utils/src/main/resources/error/error-classes.json:
##########
@@ -1746,6 +1746,34 @@
],
"sqlState" : "22012"
},
+ "INVALID_AGGREGATE_FILTER" : {
+ "message" : [
+ "The FILTER expression <filterExpr> in an aggregate function is invalid."
+ ],
+ "subClass" : {
+ "CONTAINS_AGGREGATE" : {
+ "message" : [
+ "Expected a FILTER expression without aggregation, but found
<aggExpr>."
+ ]
+ },
+ "CONTAINS_WINDOW_FUNCTION" : {
+ "message" : [
+ "Expected a FILTER expression without window function, but found
<windowExpr>."
+ ]
+ },
+ "NON_DETERMINISTIC" : {
+ "message" : [
+ "Expected non-deterministic FILTER expression."
+ ]
+ },
+ "NOT_BOOLEAN" : {
+ "message" : [
+ "Expected FILTER expression of boolean type."
Review Comment:
Let's follow the convention of `toSQLType`, and output the type in the upper
case:
```suggestion
"Expected a FILTER expression of the BOOLEAN type."
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]