/** * Provide a {@link CardinalityPusher} for the {@link Operator}. * * @param configuration if the {@link CardinalityPusher} depends on further ones, use this to obtain the latter * @return the {@link CardinalityPusher} */ default CardinalityPusher getCardinalityPusher(final Configuration configuration) { return new DefaultCardinalityPusher(this, configuration.getCardinalityEstimatorProvider()); }
public DefaultCardinalityPusher(Operator operator, int[] relevantInputIndices, int[] relevantOutputIndices, KeyValueProvider<OutputSlot<?>, CardinalityEstimator> estimationProvider) { super(relevantInputIndices, relevantOutputIndices); this.cardinalityEstimators = this.initializeCardinalityEstimators(operator, estimationProvider); }
/** * Get the {@link CardinalityPusher} implementation for the intermediate iterations. */ @Override default CardinalityPusher getCardinalityPusher(final Configuration configuration) { return new DefaultCardinalityPusher(this, Slot.toIndices(this.getLoopBodyInputs()), Slot.toIndices(this.getLoopBodyOutputs()), configuration.getCardinalityEstimatorProvider()); }
public DefaultCardinalityPusher(Operator operator, KeyValueProvider<OutputSlot<?>, CardinalityEstimator> estimationProvider) { super(operator); this.cardinalityEstimators = this.initializeCardinalityEstimators(operator, estimationProvider); }
/** * Get the {@link CardinalityPusher} implementation for the initial iteration. */ default CardinalityPusher getInitializationPusher(Configuration configuration) { return new DefaultCardinalityPusher(this, Slot.toIndices(this.getLoopInitializationInputs()), Slot.toIndices(this.getLoopBodyOutputs()), configuration.getCardinalityEstimatorProvider()); }
/** * Get the {@link CardinalityPusher} implementation for the final iteration. */ default CardinalityPusher getFinalizationPusher(Configuration configuration) { return new DefaultCardinalityPusher(this, Slot.toIndices(this.getLoopBodyInputs()), Slot.toIndices(this.getFinalLoopOutputs()), configuration.getCardinalityEstimatorProvider()); }