[ 
https://issues.apache.org/jira/browse/CALCITE-3815?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17058120#comment-17058120
 ] 

Julian Hyde commented on CALCITE-3815:
--------------------------------------

If you can manage without adding a new SqlKind, do that. Keeping MIN and MAX, 
and adding the function name as a constructor parameter makes sense. I can see 
that it might be tricky to keep SOME the aggregate function separate from SOME 
the sub-query operator.

Regarding ReservedFunctionName. If you can make that work, that would be great. 
I don't think anyone has used that mechanism for aggregate functions before, so 
it may or may not work. If you're lucky, we can treat it as an 'unresolved 
function' through the parser phase, and defer discovering that it is an 
aggregate function until the validate phase.

> Add missing SQL standard aggregate functions: EVERY, SOME, INTERSECTION
> -----------------------------------------------------------------------
>
>                 Key: CALCITE-3815
>                 URL: https://issues.apache.org/jira/browse/CALCITE-3815
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Julian Hyde
>            Assignee: Hanumath Rao Maduri
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 1.5h
>  Remaining Estimate: 0h
>
> Add missing SQL standard aggregate functions: EVERY, SOME, INTERSECTION.
> Examples:
> {code}
> SELECT deptno,
>   EVERY(sal < 3000) AS es, SOME(sal < 1000) AS ss,
>   EVERY(comm < 500) AS ec, SOME(comm < 500) AS sc
> FROM emp
> GROUP BY deptno;
> +--------+-------+-------+-------+------+
> | DEPTNO |  ES   |  SS   |  EC   |  SC  |
> +--------+-------+-------+-------+------+
> | 10     | FALSE | FALSE |       |      |
> | 20     | FALSE | TRUE  |       |      |
> | 30     | TRUE  | TRUE  | FALSE | TRUE |
> +--------+-------+-------+-------+------+
> {code}
> {{EVERY}} and {{SOME}} can be implemented by translating to {{MIN}}, {{MAX}}:
> * {{EVERY(condition)}} is equivalent to {{MIN(condition)}};
> * {{SOME(condition)}} is equivalent to {{MAX(condition)}}
> where {{condition}} is a {{BOOLEAN}} expression, possibly allowing {{NULL}} 
> values).
> {{INTERSECTION}} computes the intersection of collections (arrays and 
> multisets). (Compare to {{FUSION}}, which computes the union of collections.)
> {{FUSION}} is in the operator table but there is no code-generation for it. 
> This task should implement {{FUSION}} and {{INTERSECTION}} so that we can run 
> queries in Enumerable mode.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to