[ 
https://issues.apache.org/jira/browse/SPARK-60393?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ASF GitHub Bot updated SPARK-60393:
-----------------------------------
    Labels: pull-request-available  (was: )

> Whole-stage codegen evaluates the common subexpressions of aggregate update 
> expressions before the FILTER clause
> ----------------------------------------------------------------------------------------------------------------
>
>                 Key: SPARK-60393
>                 URL: https://issues.apache.org/jira/browse/SPARK-60393
>             Project: Spark
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 5.0.0
>            Reporter: Max Gekk
>            Priority: Major
>              Labels: pull-request-available
>
> AggregateCodegenSupport eliminates the common subexpressions of the update 
> expressions of the aggregate functions without their FILTER clauses and 
> evaluates them before the do { ... } while (false) block of each FILTER 
> (AggregateCodegenSupport.scala, the common sub-expressions block before 
> codeToEvalAggFuncs; the with-keys paths of HashAggregateExec do the same). 
> With whole-stage codegen disabled, AggregationIterator evaluates If(filter, 
> updateExpr, buffer), so the update expressions are not evaluated on a row 
> that the FILTER rejects.
> Reproduction with ANSI on:
> {code:sql}
> CREATE TABLE t USING parquet AS SELECT * FROM VALUES (NULL, 1, 2147483647), 
> (0, 1, 0) AS v(a, b, y);
> SELECT avg(y + 1) FILTER (WHERE b < 0) FROM t;
> {code}
> Average uses y + 1 in two update expressions, so it is a common 
> subexpression. With spark.sql.codegen.wholeStage=true the query raises 
> ARITHMETIC_OVERFLOW on the first row although b < 0 is FALSE on it; with 
> spark.sql.codegen.wholeStage=false it returns NULL. 
> spark.sql.subexpressionElimination.enabled=false does not turn this off.
> Pre-existing on master, found while reviewing SPARK-60315, which fixes the 
> evaluation of the FILTER condition itself and does not touch the update 
> expressions.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to