@Override public RelOptCost computeSelfCost(final RelOptPlanner planner, final RelMetadataQuery mq) { return right.computeSelfCost(planner, mq).plus(left.computeSelfCost(planner, mq).multiplyBy(50)); }
public RelOptCost getNonCumulativeCost(RelNode rel, RelMetadataQuery mq) { return rel.computeSelfCost(rel.getCluster().getPlanner(), mq); }
public RelOptCost getNonCumulativeCost(RelNode rel, RelMetadataQuery mq) { return rel.computeSelfCost(rel.getCluster().getPlanner(), mq); }
@Override public RelOptCost computeSelfCost(final RelOptPlanner planner, final RelMetadataQuery mq) { return right.computeSelfCost(planner, mq).plus(left.computeSelfCost(planner, mq).multiplyBy(50)); }
@Override public RelOptCost computeSelfCost(RelOptPlanner planner, RelMetadataQuery mq) { return Util.last(rels) .computeSelfCost(planner, mq) // Cost increases with the number of fields queried. // A plan returning 100 or more columns will have 2x the cost of a // plan returning 2 columns. // A plan where all extra columns are pruned will be preferred. .multiplyBy( RelMdUtil.linear(querySpec.fieldNames.size(), 2, 100, 1d, 2d)) .multiplyBy(getQueryTypeCostMultiplier()) // A Scan leaf filter is better than having filter spec if possible. .multiplyBy(rels.size() > 1 && rels.get(1) instanceof Filter ? 0.5 : 1.0) // a plan with sort pushed to druid is better than doing sort outside of druid .multiplyBy(Util.last(rels) instanceof Sort ? 0.1 : 1.0) .multiplyBy(getIntervalCostMultiplier()); }
@Override public RelOptCost computeSelfCost(RelOptPlanner planner, RelMetadataQuery mq) { return Util.last(rels) .computeSelfCost(planner, mq) // Cost increases with the number of fields queried. // A plan returning 100 or more columns will have 2x the cost of a // plan returning 2 columns. // A plan where all extra columns are pruned will be preferred. .multiplyBy( RelMdUtil.linear(querySpec.fieldNames.size(), 2, 100, 1d, 2d)) .multiplyBy(getQueryTypeCostMultiplier()) // a plan with sort pushed to druid is better than doing sort outside of druid .multiplyBy(Util.last(rels) instanceof Sort ? 0.1 : 1.0) .multiplyBy(getIntervalCostMultiplier()); }