[
https://issues.apache.org/jira/browse/CALCITE-7124?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18012200#comment-18012200
]
Julian Hyde commented on CALCITE-7124:
--------------------------------------
I agree, we should generate FILTER(WHERE) if the target dialect supports it.
The "agg(CASE)" trick doesn't work for all aggregate functions.
> JdbcAggregateRule should push aggregate functions FILTER clauses to
> underlying SQL via JDBC adapter
> ---------------------------------------------------------------------------------------------------
>
> Key: CALCITE-7124
> URL: https://issues.apache.org/jira/browse/CALCITE-7124
> Project: Calcite
> Issue Type: Bug
> Reporter: xiong duan
> Priority: Major
>
> In SqlDialect, the supportsAggregateFunctionFilter function determine whether
> this dialect supports the use of FILTER clauses for aggregate functions.
> And In SqlImplementor, Calcite convert `SUM(x) FILTER(WHERE b) ==> SUM(CASE
> WHEN b THEN x END)` if the dialect does't support it.
> So In JdbcAggregateRule, we should push it down, then implement the same
> semantics using JdbcDialect.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)