default boolean isFiltered()

in wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/ExecutionOperator.java [140:172]


    default boolean isFiltered(OptimizationContext.OperatorContext operatorContext) {
        assert operatorContext.getOperator() == this;

        // By default, we look for configuration keys formed like this:
        //   <my.operator.limit.key>.<input/output name>
        // If such a key exists, we compare it to values in the operatorContext.
        String limitBaseKey = this.getLimitBaseKey();
        if (limitBaseKey != null) {
            Configuration configuration = operatorContext.getOptimizationContext().getConfiguration();

            // Check the inputs.
            for (InputSlot<?> input : this.getAllInputs()) {
                String key = limitBaseKey + "." + input.getName();
                long limit = configuration.getLongProperty(key, -1);
                if (limit >= 0) {
                    CardinalityEstimate cardinality = operatorContext.getInputCardinality(input.getIndex());
                    if (cardinality != null && cardinality.getGeometricMeanEstimate() > limit) return true;
                }
            }

            // Check the outputs.
            for (OutputSlot<?> output : this.getAllOutputs()) {
                String key = limitBaseKey + "." + output.getName();
                long limit = configuration.getLongProperty(key, -1);
                if (limit >= 0) {
                    CardinalityEstimate cardinality = operatorContext.getOutputCardinality(output.getIndex());
                    if (cardinality != null && cardinality.getGeometricMeanEstimate() > limit) return true;
                }
            }
        }

        return false;
    }