@Override public RelNode convert(RelNode rel) { final Union union = (Union) rel; final RelTraitSet traitSet = union.getTraitSet().replace(OLAPRel.CONVENTION); final List<RelNode> inputs = union.getInputs(); return new OLAPUnionRel(rel.getCluster(), traitSet, convertList(inputs, OLAPRel.CONVENTION), union.all); } }
@Override public void onMatch(final RelOptRuleCall call) { final Union unionRel = call.rel(0); final DruidRel someDruidRel = call.rel(1); final List<RelNode> inputs = unionRel.getInputs(); if (unionRel.all) { // Can only do UNION ALL. call.transformTo(DruidUnionRel.create( someDruidRel.getQueryMaker(), unionRel.getRowType(), inputs, -1 )); } } }
private void check(Union union) { if (union.getInputs().size() != 2) {
Union u = ((Union) r); ASTNode left = new ASTConverter(((Union) r).getInput(0), this.derivedTableCount).convert(); for (int ind = 1; ind < u.getInputs().size(); ind++) { left = getUnionAllAST(left, new ASTConverter(((Union) r).getInput(ind), this.derivedTableCount).convert());
Union u = ((Union) r); ASTNode left = new ASTConverter(((Union) r).getInput(0), this.derivedTableCount).convert(); for (int ind = 1; ind < u.getInputs().size(); ind++) { left = getUnionAllAST(left, new ASTConverter(((Union) r).getInput(ind), this.derivedTableCount).convert());
public Double getMinRowCount(Union rel, RelMetadataQuery mq) { double rowCount = 0.0; for (RelNode input : rel.getInputs()) { Double partialRowCount = mq.getMinRowCount(input); if (partialRowCount != null) { rowCount += partialRowCount; } } return rowCount; }
public Double getMinRowCount(Union rel, RelMetadataQuery mq) { double rowCount = 0.0; for (RelNode input : rel.getInputs()) { Double partialRowCount = mq.getMinRowCount(input); if (partialRowCount != null) { rowCount += partialRowCount; } } return rowCount; }
public Double getPopulationSize(Union rel, RelMetadataQuery mq, ImmutableBitSet groupKey) { double population = 0.0; for (RelNode input : rel.getInputs()) { Double subPop = mq.getPopulationSize(input, groupKey); if (subPop == null) { return null; } population += subPop; } return population; }
/** Returns an estimate of the number of rows returned by a {@link Union} * (before duplicates are eliminated). */ public static double getUnionAllRowCount(RelMetadataQuery mq, Union rel) { double rowCount = 0; for (RelNode input : rel.getInputs()) { rowCount += mq.getRowCount(input); } return rowCount; }
public Double getMaxRowCount(Union rel, RelMetadataQuery mq) { double rowCount = 0.0; for (RelNode input : rel.getInputs()) { Double partialRowCount = mq.getMaxRowCount(input); if (partialRowCount == null) { return null; } rowCount += partialRowCount; } return rowCount; }
/** Returns an estimate of the number of rows returned by a {@link Union} * (before duplicates are eliminated). */ public static double getUnionAllRowCount(RelMetadataQuery mq, Union rel) { double rowCount = 0; for (RelNode input : rel.getInputs()) { rowCount += mq.getRowCount(input); } return rowCount; }
public UnionNode(Compiler compiler, Union rel) { ImmutableList.Builder<Source> builder = ImmutableList.builder(); for (int i = 0; i < rel.getInputs().size(); i++) { builder.add(compiler.source(rel, i)); } this.sources = builder.build(); this.sink = compiler.sink(rel); this.rel = rel; }
public void onMatch(RelOptRuleCall call) { final Union union = call.rel(0); if (union.all) { return; // nothing to do } final RelBuilder relBuilder = call.builder(); relBuilder.pushAll(union.getInputs()); relBuilder.union(true, union.getInputs().size()); relBuilder.distinct(); call.transformTo(relBuilder.build()); } }
public void onMatch(RelOptRuleCall call) { final Union union = call.rel(0); if (union.all) { return; // nothing to do } final RelBuilder relBuilder = call.builder(); relBuilder.pushAll(union.getInputs()); relBuilder.union(true, union.getInputs().size()); relBuilder.distinct(); call.transformTo(relBuilder.build()); } }
public RelNode convert(RelNode rel) { final Union union = (Union) rel; final RelTraitSet traitSet = union.getTraitSet().replace(out); return new JdbcUnion(rel.getCluster(), traitSet, convertList(union.getInputs(), out), union.all); } }
public RelNode convert(RelNode rel) { final Union union = (Union) rel; final RelTraitSet traitSet = union.getTraitSet().replace(out); return new JdbcUnion(rel.getCluster(), traitSet, convertList(union.getInputs(), out), union.all); } }