Add boolean aggregate functions EVERY, ANY and SOME
---------------------------------------------------
Key: CORE-5975
URL: http://tracker.firebirdsql.org/browse/CORE-5975
Project: Firebird Core
Issue Type: New Feature
Components: Engine
Reporter: Mark Rotteveel
The SQL standard defines the boolean aggregate functions EVERY, ANY and SOME
(see SQL:2016-2 10.9 <aggregate function>). In a way, these are the counterpart
of the quantified comparison predicates (ALL, ANY and SOME) that Firebird
already supports.
The value expression inside the aggregate is a boolean expression, eg
EVERY(somebooleancolumn) is true if all values for somebooleancolumn are true
(also true if the group set is empty, which can be relevant when also using a
FILTER-clause).
ANY(x = 'y' and someothercolumn is null) is true if at least one row in the
group set has a column x with value 'y' and someothercolumn null.
From the standard:
"""
Syntax Rules
[..]
7) If <general set function> is specified, then:
[..]
b) Let DT be the declared type of the <value expression>.
[..]
e) If EVERY, ANY, or SOME is specified, then DT shall be boolean and the
declared type of the result is boolean.
[..]
General Rules
[..]
7) If <general set function> is specified, then:
a) Let TX be the single-column table that is the result of applying the
<value expression> to each row of T1 and eliminating null values. If one or
more null values are eliminated, then a completion condition is raised: warning
— null value eliminated in set function.
b) Case:
i) If DISTINCT is specified, then let TXA be the result of eliminating
redundant duplicate values from TX, using the comparison rules specified in
Subclause 8.2, "<comparison predicate>", to identify the redundant duplicate
values.
ii) Otherwise, let TXA be TX.
[..]
d) Case:
[..]
vi) If EVERY is specified, then
Case:
1) If the value of some element of TXA is False, then the result is False.
2) Otherwise, the result is True.
vii) If ANY or SOME is specified, then
Case:
1) If the value of some element of TXA is True, then the result is True.
2) Otherwise, the result is False.
"""
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel