protected double getFilterReduction(){ if(filter != null){ double selectivity = 0.15d; double max = PrelUtil.getPlannerSettings(getCluster()).getFilterMaxSelectivityEstimateFactor(); double min = PrelUtil.getPlannerSettings(getCluster()).getFilterMinSelectivityEstimateFactor(); if(selectivity < min) { selectivity = min; } if(selectivity > max) { selectivity = max; } return selectivity; }else { return 1d; } }
@Override protected double getFilterReduction(){ if(filter != null){ double selectivity = 0.15d; double max = PrelUtil.getPlannerSettings(getCluster()).getFilterMaxSelectivityEstimateFactor(); double min = PrelUtil.getPlannerSettings(getCluster()).getFilterMinSelectivityEstimateFactor(); if(selectivity < min) { selectivity = min; } if(selectivity > max) { selectivity = max; } return selectivity; }else { return 1d; } }
protected FilterRelBase(Convention convention, RelOptCluster cluster, RelTraitSet traits, RelNode child, RexNode condition) { super(cluster, traits, child, condition); assert getConvention() == convention; // save the number of conjuncts that make up the filter condition such // that repeated calls to the costing function can use the saved copy conjunctions = RelOptUtil.conjunctions(condition); numConjuncts = conjunctions.size(); // assert numConjuncts >= 1; this.hasContains = ContainsRexVisitor.hasContainsCheckOrigin(this, this.getCondition(),-1); boolean foundFlatten = false; for (RexNode rex : this.getChildExps()) { MoreRelOptUtil.FlattenRexVisitor visitor = new MoreRelOptUtil.FlattenRexVisitor(); if (rex.accept(visitor)) { foundFlatten = true; } } this.hasFlatten = foundFlatten; final PlannerSettings plannerSettings = PrelUtil.getPlannerSettings(cluster.getPlanner()); filterMinSelectivityEstimateFactor = plannerSettings.getFilterMinSelectivityEstimateFactor(); filterMaxSelectivityEstimateFactor = plannerSettings.getFilterMaxSelectivityEstimateFactor(); }