RexBuilder rexBuilder = aggr.getCluster().getRexBuilder(); for (ImmutableBitSet groupSet : aggr.getGroupSets()) { RelNode unionAggr = relBuilder.union(true, aggr.getGroupSets().size()).build();
@Override public RelNode convert(RelNode rel) { LogicalAggregate agg = (LogicalAggregate) rel; // AVG() will be transformed into SUM()/COUNT() by AggregateReduceFunctionsRule. // Here only let the transformed plan pass. if (containsAvg(agg)) { return null; } RelTraitSet traitSet = agg.getTraitSet().replace(OLAPRel.CONVENTION); try { return new OLAPAggregateRel(agg.getCluster(), traitSet, convert(agg.getInput(), OLAPRel.CONVENTION), agg.indicator, agg.getGroupSet(), agg.getGroupSets(), agg.getAggCallList()); } catch (InvalidRelException e) { throw new IllegalStateException("Can't create OLAPAggregateRel!", e); } }
RexBuilder rexBuilder = aggr.getCluster().getRexBuilder(); for (ImmutableBitSet groupSet : aggr.getGroupSets()) { RelNode unionAggr = relBuilder.union(true, aggr.getGroupSets().size()).build();
public RelNode convert(RelNode rel) { final LogicalAggregate agg = (LogicalAggregate) rel; final RelTraitSet traitSet = agg.getTraitSet().replace(BindableConvention.INSTANCE); try { return new BindableAggregate(rel.getCluster(), traitSet, convert(agg.getInput(), traitSet), agg.indicator, agg.getGroupSet(), agg.getGroupSets(), agg.getAggCallList()); } catch (InvalidRelException e) { RelOptPlanner.LOGGER.debug(e.toString()); return null; } } }
public RelNode convert(RelNode rel) { final LogicalAggregate agg = (LogicalAggregate) rel; final RelTraitSet traitSet = agg.getTraitSet().replace(BindableConvention.INSTANCE); try { return new BindableAggregate(rel.getCluster(), traitSet, convert(agg.getInput(), traitSet), agg.indicator, agg.getGroupSet(), agg.getGroupSets(), agg.getAggCallList()); } catch (InvalidRelException e) { RelOptPlanner.LOGGER.debug(e.toString()); return null; } } }
@Override public RelNode convert(RelNode rel) { LogicalAggregate agg = (LogicalAggregate) rel; // AVG() will be transformed into SUM()/COUNT() by AggregateReduceFunctionsRule. // Here only let the transformed plan pass. if (containsAvg(agg)) { return null; } RelTraitSet traitSet = agg.getTraitSet().replace(OLAPRel.CONVENTION); try { return new OLAPAggregateRel(agg.getCluster(), traitSet, convert(agg.getInput(), OLAPRel.CONVENTION), agg.indicator, agg.getGroupSet(), agg.getGroupSets(), agg.getAggCallList()); } catch (InvalidRelException e) { throw new IllegalStateException("Can't create OLAPAggregateRel!", e); } }
public RelNode convert(RelNode rel) { final LogicalAggregate agg = (LogicalAggregate) rel; final RelTraitSet traitSet = agg.getTraitSet().replace(EnumerableConvention.INSTANCE); try { return new EnumerableAggregate( rel.getCluster(), traitSet, convert(agg.getInput(), EnumerableConvention.INSTANCE), agg.indicator, agg.getGroupSet(), agg.getGroupSets(), agg.getAggCallList()); } catch (InvalidRelException e) { EnumerableRules.LOGGER.debug(e.toString()); return null; } } }
@Override public RelNode visit(LogicalAggregate aggregate) { final RelNode input = aggregate.getInput().accept(this); return new LogicalAggregate( cluster, copyOf(aggregate.getTraitSet()), input, aggregate.indicator, aggregate.getGroupSet(), aggregate.getGroupSets(), copyOf(aggregate.getAggCallList()) ); }
public RelNode convert(RelNode rel) { final LogicalAggregate agg = (LogicalAggregate) rel; final RelTraitSet traitSet = agg.getTraitSet().replace(EnumerableConvention.INSTANCE); try { return new EnumerableAggregate( rel.getCluster(), traitSet, convert(agg.getInput(), EnumerableConvention.INSTANCE), agg.indicator, agg.getGroupSet(), agg.getGroupSets(), agg.getAggCallList()); } catch (InvalidRelException e) { EnumerableRules.LOGGER.debug(e.toString()); return null; } } }
public RelNode convert(RelNode rel) { final LogicalAggregate agg = (LogicalAggregate) rel; final RelTraitSet traitSet = agg.getTraitSet().replace(out); try { return new ElasticsearchAggregate( rel.getCluster(), traitSet, convert(agg.getInput(), traitSet.simplify()), agg.indicator, agg.getGroupSet(), agg.getGroupSets(), agg.getAggCallList()); } catch (InvalidRelException e) { return null; } } }
@Override public void onMatch(RelOptRuleCall call) { final LogicalAggregate aggregate = (LogicalAggregate) call.rel(0); final RelNode input = call.rel(1); if (aggregate.containsDistinctCall()) { // currently, don't use this rule if any of the aggregates contains DISTINCT return; } final RelTraitSet traits = aggregate.getTraitSet().plus(Rel.LOGICAL); final RelNode convertedInput = convert(input, input.getTraitSet().plus(Rel.LOGICAL).simplify()); call.transformTo(new AggregateRel(aggregate.getCluster(), traits, convertedInput, aggregate.indicator, aggregate.getGroupSet(), aggregate.getGroupSets(), aggregate.getAggCallList())); } }
@Override public void onMatch(RelOptRuleCall call) { final LogicalAggregate aggregate = call.rel(0); final RelNode input = call.rel(1); if (aggregate.containsDistinctCall()) { // currently, don't use this rule if any of the aggregates contains DISTINCT return; } final RelTraitSet traits = aggregate.getTraitSet().plus(DrillRel.DRILL_LOGICAL); final RelNode convertedInput = convert(input, input.getTraitSet().plus(DrillRel.DRILL_LOGICAL).simplify()); call.transformTo(new DrillAggregateRel(aggregate.getCluster(), traits, convertedInput, aggregate.indicator, aggregate.getGroupSet(), aggregate.getGroupSets(), aggregate.getAggCallList())); } }
public void onMatch(RelOptRuleCall call) { RelTraitSet empty = call.getPlanner().emptyTraitSet(); LogicalAggregate rel = call.rel(0); assert rel.getGroupSet().cardinality() == 1; int aggIndex = rel.getGroupSet().iterator().next(); RelTrait collation = RelCollations.of( new RelFieldCollation(aggIndex, RelFieldCollation.Direction.ASCENDING, RelFieldCollation.NullDirection.FIRST)); RelTraitSet desiredTraits = empty.replace(PHYSICAL).replace(collation); RelNode convertedInput = convert(rel.getInput(), desiredTraits); call.transformTo( new PhysAgg(rel.getCluster(), empty.replace(PHYSICAL), convertedInput, rel.indicator, rel.getGroupSet(), rel.getGroupSets(), rel.getAggCallList())); } }
public void onMatch(RelOptRuleCall call) { RelTraitSet empty = call.getPlanner().emptyTraitSet(); LogicalAggregate rel = call.rel(0); assert rel.getGroupSet().cardinality() == 1; int aggIndex = rel.getGroupSet().iterator().next(); RelTrait collation = RelCollations.of( new RelFieldCollation(aggIndex, RelFieldCollation.Direction.ASCENDING, RelFieldCollation.NullDirection.FIRST)); RelTraitSet desiredTraits = empty.replace(PHYSICAL).replace(collation); RelNode convertedInput = convert(rel.getInput(), desiredTraits); call.transformTo( new PhysAgg(rel.getCluster(), empty.replace(PHYSICAL), convertedInput, rel.indicator, rel.getGroupSet(), rel.getGroupSets(), rel.getAggCallList())); } }