[ 
https://issues.apache.org/jira/browse/CALCITE-2654?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Julian Hyde updated CALCITE-2654:
---------------------------------
    Description: 
In RelBuilder, add a fluent API for building complex aggregate calls. 
Currently, the RelBuilder.aggregateCall has arguments aggFunction, distinct, 
approximate, filter, orderKeys, alias and operands, and in CALCITE-2224 we're 
adding orderKeys. You have to specify all of them, whether or not your function 
is DISTINCT or has a FILTER(WHERE) clause.

The new API would be simple:
 * {{RelBuilder.aggregateCall(op, operands)}}
 * {{RelBuilder.sum(operand)}}
 * {{RelBuilder.count(operands)}}
 * {{RelBuilder.min(operands)}}

and so forth. Each of these returns an AggCall, and we propose to add fluent 
methods to that:
* {{AggCall.distinct(boolean)}}
* {{AggCall.approximate(boolean)}}
* {{AggCall.alias(String)}}
* {{AggCall.filter(RexNode)}}
* {{AggCall.sort(RexNode...)}} (for CALCITE-2224)

Thus you can write 
{{builder.sum(builder.field("SAL)).distinct(true).alias("SUM_SAL")}}.

  was:
In RelBuilder, add a fluent API for building complex aggregate calls. 
Currently, the RelBuilder.aggregateCall has arguments aggFunction, distinct, 
approximate, filter, orderKeys,
alias and operands, and in CALCITE-2224 we're adding orderKeys. You have to 
specify all of them, whether or not your function is DISTINCT or has a 
FILTER(WHERE) clause.

The new API would be simple:
 * {{RelBuilder.aggregateCall(op, operands)}}
 * {{RelBuilder.sum(operand)}}
 * {{RelBuilder.count(operands)}}
 * {{RelBuilder.min(operands)}}

and so forth. Each of these returns an AggCall, and we propose to add fluent 
methods to that:
* {{AggCall.distinct(boolean)}}
* {{AggCall.approximate(boolean)}}
* {{AggCall.alias(String)}}
* {{AggCall.filter(RexNode)}}
* {{AggCall.sort(RexNode...)}} (for CALCITE-2224)

Thus you can write 
{{builder.sum(builder.field("SAL)).distinct(true).alias("SUM_SAL")}}.


> In RelBuilder, add a fluent API for building complex aggregate calls
> --------------------------------------------------------------------
>
>                 Key: CALCITE-2654
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2654
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Julian Hyde
>            Assignee: Julian Hyde
>            Priority: Major
>
> In RelBuilder, add a fluent API for building complex aggregate calls. 
> Currently, the RelBuilder.aggregateCall has arguments aggFunction, distinct, 
> approximate, filter, orderKeys, alias and operands, and in CALCITE-2224 we're 
> adding orderKeys. You have to specify all of them, whether or not your 
> function is DISTINCT or has a FILTER(WHERE) clause.
> The new API would be simple:
>  * {{RelBuilder.aggregateCall(op, operands)}}
>  * {{RelBuilder.sum(operand)}}
>  * {{RelBuilder.count(operands)}}
>  * {{RelBuilder.min(operands)}}
> and so forth. Each of these returns an AggCall, and we propose to add fluent 
> methods to that:
> * {{AggCall.distinct(boolean)}}
> * {{AggCall.approximate(boolean)}}
> * {{AggCall.alias(String)}}
> * {{AggCall.filter(RexNode)}}
> * {{AggCall.sort(RexNode...)}} (for CALCITE-2224)
> Thus you can write 
> {{builder.sum(builder.field("SAL)).distinct(true).alias("SUM_SAL")}}.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to