Thanks Shuyi for taking on some of the load of reviewing/committing. Much 
appreciated!

> On Apr 9, 2018, at 11:10 AM, [email protected] wrote:
> 
> Repository: calcite
> Updated Branches:
>  refs/heads/master 5331bd2f8 -> 06080ff07
> 
> 
> [CALCITE-2216] Improve extensibility of AggregateReduceFunctionsRule (Fabian 
> Hueske)
> 
> Close apache/calcite#650
> 
> 
> Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
> Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/06080ff0
> Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/06080ff0
> Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/06080ff0
> 
> Branch: refs/heads/master
> Commit: 06080ff072dfd72a884423bde3a3befa2c465842
> Parents: 5331bd2
> Author: Fabian Hueske <[email protected]>
> Authored: Fri Mar 16 16:11:15 2018 +0100
> Committer: Shuyi Chen <[email protected]>
> Committed: Mon Apr 9 11:10:05 2018 -0700
> 
> ----------------------------------------------------------------------
> .../rel/rules/AggregateReduceFunctionsRule.java    | 17 ++++++++++++++++-
> 1 file changed, 16 insertions(+), 1 deletion(-)
> ----------------------------------------------------------------------
> 
> 
> http://git-wip-us.apache.org/repos/asf/calcite/blob/06080ff0/core/src/main/java/org/apache/calcite/rel/rules/AggregateReduceFunctionsRule.java
> ----------------------------------------------------------------------
> diff --git 
> a/core/src/main/java/org/apache/calcite/rel/rules/AggregateReduceFunctionsRule.java
>  
> b/core/src/main/java/org/apache/calcite/rel/rules/AggregateReduceFunctionsRule.java
> index 957af1e..e65b6a1 100644
> --- 
> a/core/src/main/java/org/apache/calcite/rel/rules/AggregateReduceFunctionsRule.java
> +++ 
> b/core/src/main/java/org/apache/calcite/rel/rules/AggregateReduceFunctionsRule.java
> @@ -190,7 +190,7 @@ public class AggregateReduceFunctionsRule extends 
> RelOptRule {
>               Collections.<String>nCopies(extraArgCount, null)));
>     }
>     newAggregateRel(relBuilder, oldAggRel, newCalls);
> -    relBuilder.project(projList, oldAggRel.getRowType().getFieldNames());
> +    newCalcRel(relBuilder, oldAggRel.getRowType(), projList);
>     ruleCall.transformTo(relBuilder.build());
>   }
> 
> @@ -567,6 +567,21 @@ public class AggregateReduceFunctionsRule extends 
> RelOptRule {
>         newCalls);
>   }
> 
> +  /**
> +   * Add a calc with the expressions to compute the original agg calls from 
> the
> +   * decomposed ones.
> +   *
> +   * @param relBuilder Builder of relational expressions; at the top of its
> +   *                   stack is its input
> +   * @param rowType The output row type of the original aggregate.
> +   * @param exprs The expressions to compute the original agg calls.
> +   */
> +  protected void newCalcRel(RelBuilder relBuilder,
> +      RelDataType rowType,
> +      List<RexNode> exprs) {
> +    relBuilder.project(exprs, rowType.getFieldNames());
> +  }
> +
>   private RelDataType getFieldType(RelNode relNode, int i) {
>     final RelDataTypeField inputField =
>         relNode.getRowType().getFieldList().get(i);
> 

Reply via email to