You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by sh...@apache.org on 2018/04/09 18:10:43 UTC
calcite git commit: [CALCITE-2216] Improve extensibility of
AggregateReduceFunctionsRule (Fabian Hueske)
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 <fh...@apache.org>
Authored: Fri Mar 16 16:11:15 2018 +0100
Committer: Shuyi Chen <sh...@uber.com>
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);
Re: calcite git commit: [CALCITE-2216] Improve extensibility of
AggregateReduceFunctionsRule (Fabian Hueske)
Posted by Julian Hyde <jh...@apache.org>.
Thanks Shuyi for taking on some of the load of reviewing/committing. Much appreciated!
> On Apr 9, 2018, at 11:10 AM, shuyichen@apache.org 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 <fh...@apache.org>
> Authored: Fri Mar 16 16:11:15 2018 +0100
> Committer: Shuyi Chen <sh...@uber.com>
> 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);
>