public static RelTraitSet fixTraits(RelOptPlanner cluster, RelTraitSet set) { if (getPlannerSettings(cluster).isSingleMode()) { return set.replace(DistributionTrait.ANY); } else { return set; } }
public static boolean isSingleMode(RelOptRuleCall call){ return PrelUtil.getPlannerSettings(call.getPlanner()).isSingleMode(); }
protected static boolean isSingleton(RelOptRuleCall call) { PlannerSettings settings = PrelUtil.getPlannerSettings(call.getPlanner()); if (settings.isSingleMode()) { return true; } RelNode child = call.rel(0).getInputs().get(0); // if small input, then singleton return call.getMetadataQuery().getRowCount(child) < settings.getSliceTarget(); }
private static RelTraitSet traits( RelOptCluster cluster, double rowCount, int splitCount, RelTraitSet traitSet) { PlannerSettings settings = PrelUtil.getPlannerSettings(cluster.getPlanner()); boolean smallInput = rowCount < (double)settings.getSliceTarget(); DistributionTrait distribution; if(settings.isMultiPhaseAggEnabled() && !settings.isSingleMode() && !smallInput && splitCount > 1) { distribution = DistributionTrait.ANY; } else { distribution = DistributionTrait.SINGLETON; } return traitSet.plus(distribution); }
public static RelNode convert(RelNode rel, RelTraitSet toTraits){ toTraits = toTraits.simplify(); PlannerSettings settings = PrelUtil.getSettings(rel.getCluster()); if(settings.isSingleMode()){ toTraits = toTraits.replace(DistributionTrait.ANY); } return RelOptRule.convert(rel, toTraits.simplify()); }