[
https://issues.apache.org/jira/browse/CALCITE-3815?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17055330#comment-17055330
]
Julian Hyde commented on CALCITE-3815:
--------------------------------------
Reviewing PR 06bbf26434209f3e97dfa3f3f5111a5ffb02c164:
* In commit message, use brackets not colon
* Double-check that parser changes are necessary. Maybe adding SOME and EVERY
to {{ReservedFunctionNames}} is sufficient.
* In {{SqlStdOperatorTable}} put one line between definitions (not 2, not 0).
* In BuiltInMethod, COLLECTION_INTERSECTION should be COLLECTION_RETAIN_ALL.
It is named after the Java method.
* In SqlToRelConverterTest, I'd drop 2 tests, and combine the other 2 tests
into one. We don't need that bloat.
* Add a SqlParserTest.
* In SqlValidatorTest, check that SOME and INTERSECT and EVERY act as
aggregate functions and implicitly make a query an aggregate query, like
[testAggregateInNonGroupBy|https://github.com/apache/calcite/blob/4208d0ba6f2a749692fe64181a1373af07d55db5/core/src/test/java/org/apache/calcite/test/SqlValidatorTest.java#L7113]
* In reference.md, the arguments to SOME and EVERY should not be optional.
* Add one or two queries to agg.iq.
> 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: 50m
> 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)