Julian Hyde created CALCITE-5490:
------------------------------------
Summary: Add a 'naiveMeasures' connection property to allow
regular aggregate functions (e.g. SUM, MIN) to be used instead of AGGREGATE
Key: CALCITE-5490
URL: https://issues.apache.org/jira/browse/CALCITE-5490
Project: Calcite
Issue Type: Bug
Reporter: Julian Hyde
When we introduce measures to SQL (see CALCITE-4496) a particular can arise
that users know about measures (have added measure columns to their tables and
views, and want to use those measures in queries) but their querying tools to
not (therefore require an aggregate function when a measure is used in a
{{GROUP BY}} query but do not know about the new {{AGGREGATE}} aggregate
function (added in CALCITE-5105)).
This feature would add a new [connection
property|https://calcite.apache.org/javadocAggregate/org/apache/calcite/config/CalciteConnectionProperty.html],
{{{}naiveMeasures{}}}. Measures and the {{AGGREGATE}} aggregate function are
enabled regardless of its setting. If {{{}naiveMeasures=true{}}}, a call to one
of the core aggregate functions ({{{}MAX{}}}, {{{}MIN{}}}, {{{}SUM{}}},
{{{}AVG{}}}) whose argument is a measure is deemed to be a call to
{{{}AGGREGATE{}}}. If the argument is not a measure, the calls are unchanged.
For example, if {{naiveMeasures=true}} then
{code:java}
SELECT deptno, MAX(avg_sal), MAX(age)
FROM Emp
GROUP BY deptno
{code}
is translated as if the user had written
{code:java}
SELECT deptno, AGGREGATE(avg_sal), MAX(age)
FROM Emp
GROUP BY deptno
{code}
(The {{avg_sal}} column is a measure, {{age}} is a regular column.)
If {{{}naiveMeasures=false{}}}, the default, calls to {{{}MAX{}}}, {{{}MIN{}}},
{{{}SUM{}}}, {{AVG}} are unchanged even if their argument is a measure.
(The semantics of {{MAX(avg_sal)}} are not yet finalized, but one semantics
under consideration is that the {{avg_sal}} measure is evaluated - converted
from a measure to a value - for each row (employee) and the {{MAX}} aggregate
function is then applied to those values.)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)