@Override public RelOptCost computeSelfCost(final RelOptPlanner planner, final RelMetadataQuery mq) { return planner.getCostFactory().makeCost(mq.getRowCount(sourceRel), 0, 0).multiplyBy(10); } }
@Override public RelTraitSet replaceTraitSet(RelTrait trait) { RelTraitSet oldTraitSet = this.traitSet; this.traitSet = this.traitSet.replace(trait); return oldTraitSet; }
@Override public void onMatch(final RelOptRuleCall call) { final LogicalTableScan scan = call.rel(0); final RelOptTable table = scan.getTable(); final DruidTable druidTable = table.unwrap(DruidTable.class); if (druidTable != null) { call.transformTo( DruidQueryRel.fullScan(scan, table, druidTable, queryMaker) ); } } }
@Override public RelOptCost computeSelfCost(RelOptPlanner planner, RelMetadataQuery mq) { RelOptCost relOptCost = super.computeSelfCost(planner, mq).multiplyBy(0.05); return planner.getCostFactory().makeCost(relOptCost.getRows(), 0, 0); }
@Override public RelOptCost computeSelfCost(final RelOptPlanner planner, final RelMetadataQuery mq) { return planner.getCostFactory().makeCost(rels.stream().mapToDouble(mq::getRowCount).sum(), 0, 0); }
@Override public DruidOuterQueryRel asBindable() { return new DruidOuterQueryRel( getCluster(), getTraitSet().plus(BindableConvention.INSTANCE), sourceRel, partialQuery, getQueryMaker() ); }
public static String explain(final RelNode rel, SqlExplainLevel detailLevel) { String explain = ""; try { explain = RelOptUtil.toString(rel); } catch (StackOverflowError e) { LOG.error("StackOverflowError occurred while extracting plan. Please report it to the dev@ mailing list."); LOG.error("RelNode " + rel + " ExplainLevel " + detailLevel, e); LOG.error("Forcing plan to empty string and continue... SQL Runner may not working properly after."); } return explain; } }
@Override public RelNode toRel(final RelOptTable.ToRelContext context, final RelOptTable table) { return LogicalTableScan.create(context.getCluster(), table); }
@Override public RelTraitSet replaceTraitSet(RelTrait trait) { RelTraitSet oldTraitSet = this.traitSet; this.traitSet = this.traitSet.replace(trait); return oldTraitSet; }
@Override public DruidQueryRel asBindable() { return new DruidQueryRel( getCluster(), getTraitSet().plus(BindableConvention.INSTANCE), table, druidTable, getQueryMaker(), partialQuery ); }
@Override public RelTraitSet replaceTraitSet(RelTrait trait) { RelTraitSet oldTraitSet = this.traitSet; this.traitSet = this.traitSet.replace(trait); return oldTraitSet; }
@Override public RelTraitSet replaceTraitSet(RelTrait trait) { RelTraitSet oldTraitSet = this.traitSet; this.traitSet = this.traitSet.replace(trait); return oldTraitSet; } }
@Override public RelTraitSet replaceTraitSet(RelTrait trait) { RelTraitSet oldTraitSet = this.traitSet; this.traitSet = this.traitSet.replace(trait); return oldTraitSet; }