public static DruidUnionRel create( final QueryMaker queryMaker, final RelDataType rowType, final List<RelNode> rels, final int limit ) { Preconditions.checkState(rels.size() > 0, "rels must be nonempty"); return new DruidUnionRel( rels.get(0).getCluster(), rels.get(0).getTraitSet(), queryMaker, rowType, new ArrayList<>(rels), limit ); }
public RelTrait[] getRelTraits() { return leafRel().getTraitSet().toArray(new RelTrait[0]); }
public RelNode align(RelNode rel, List<RelFieldCollation> collations) { ImmutableList.Builder<RelNode> newInputs = new ImmutableList.Builder<>(); for (RelNode input : rel.getInputs()) { newInputs.add(dispatchAlign(input, ImmutableList.<RelFieldCollation>of())); } return rel.copy(rel.getTraitSet(), newInputs.build()); }
@Override public RelNode createAggregate(RelNode child, boolean indicator, ImmutableBitSet groupSet, ImmutableList<ImmutableBitSet> groupSets, List<AggregateCall> aggCalls) { if (indicator) { throw new IllegalStateException("Hive does not support indicator columns but Calcite " + "created an Aggregate operator containing them"); } return new HiveAggregate(child.getCluster(), child.getTraitSet(), child, groupSet, groupSets, aggCalls); } }
private RelNode convertToStormRel(RelNode relNode) throws RelConversionException { RelTraitSet traitSet = relNode.getTraitSet(); traitSet = traitSet.simplify(); // PlannerImpl.transform() optimizes RelNode with ruleset return planner.transform(STORM_REL_CONVERSION_RULES, traitSet.plus(StreamsLogicalConvention.INSTANCE), relNode); }
@Override public RelNode createSemiJoin(RelNode left, RelNode right, RexNode condition) { final JoinInfo joinInfo = JoinInfo.of(left, right, condition); final RelOptCluster cluster = left.getCluster(); return HiveSemiJoin.getSemiJoin(cluster, left.getTraitSet(), left, right, condition, joinInfo.leftKeys, joinInfo.rightKeys); } }
@Override public RelNode createProject(RelNode child, List<? extends RexNode> childExprs, List<String> fieldNames) { RelOptCluster cluster = child.getCluster(); RelDataType rowType = RexUtil.createStructType(cluster.getTypeFactory(), childExprs, fieldNames); RelTraitSet trait = TraitsUtil.getDefaultTraitSet(cluster, child.getTraitSet()); RelNode project = HiveProject.create(cluster, child, childExprs, rowType, trait, Collections.<RelCollation> emptyList()); return project; } }
@Override public RelNode convert(RelNode in) { return new JdbcDrel(in.getCluster(), in.getTraitSet().replace(DrillRel.DRILL_LOGICAL), convert(in, in.getTraitSet().replace(this.getInTrait()).simplify())); }
@Override public RelNode createProject(RelNode child, List<? extends RexNode> childExprs, List<String> fieldNames) { RelOptCluster cluster = child.getCluster(); RelDataType rowType = RexUtil.createStructType(cluster.getTypeFactory(), childExprs, fieldNames); RelTraitSet trait = TraitsUtil.getDefaultTraitSet(cluster, child.getTraitSet()); RelNode project = HiveProject.create(cluster, child, childExprs, rowType, trait, Collections.<RelCollation> emptyList()); return project; } }
@Override public RelNode convert(RelNode rel) { RelTraitSet newTraitSet = rel.getTraitSet().replace(getOutConvention()); return new OLAPToEnumerableConverter(rel.getCluster(), newTraitSet, rel); }
public RelNode convert(RelNode rel) { LogicalFilter filter = (LogicalFilter) rel; return new JdbcRules.JdbcFilter(rel.getCluster(), rel.getTraitSet().replace(this.out), convert(filter.getInput(), filter.getInput().getTraitSet().replace(this.out).simplify()), filter.getCondition()); }
@Override public RelNode convert(RelNode in) { return new JdbcIntermediatePrel( in.getCluster(), in.getTraitSet().replace(getOutTrait()), in.getInput(0)); }
public void onMatch(RelOptRuleCall call) { final HiveFilter filter = call.rel(0); final HiveSortLimit sort = call.rel(1); final RelNode newFilter = filter.copy(sort.getInput().getTraitSet(), ImmutableList.<RelNode>of(sort.getInput())); final HiveSortLimit newSort = sort.copy(sort.getTraitSet(), newFilter, sort.collation, sort.offset, sort.fetch); call.transformTo(newSort); }
@Override public RelNode convert(RelNode rel) { final Filter filter = (Filter) rel; final RelNode input = filter.getInput(); return new StreamsFilterRel(filter.getCluster(), filter.getTraitSet().replace(StreamsLogicalConvention.INSTANCE), convert(input, input.getTraitSet().replace(StreamsLogicalConvention.INSTANCE)), filter.getCondition()); } }
@Override public RelNode convert(RelNode rel) { final Calc calc = (Calc) rel; final RelNode input = calc.getInput(); return new StreamsCalcRel(calc.getCluster(), calc.getTraitSet().replace(StreamsLogicalConvention.INSTANCE), convert(input, input.getTraitSet().replace(StreamsLogicalConvention.INSTANCE)), calc.getProgram()); } }
@Override public RelNode convert(RelNode rel) { final Project project = (Project) rel; final RelNode input = project.getInput(); return new StreamsProjectRel(project.getCluster(), project.getTraitSet().replace(StreamsLogicalConvention.INSTANCE), convert(input, input.getTraitSet().replace(StreamsLogicalConvention.INSTANCE)), project.getProjects(), project.getRowType()); } }
@Override public RelNode convert(RelNode rel) { final Sort sort = (Sort) rel; if (sort.offset != null || sort.fetch != null) { return null; } final RelTraitSet traitSet = sort.getTraitSet().replace(OLAPRel.CONVENTION); final RelNode input = sort.getInput(); return new OLAPSortRel(rel.getCluster(), traitSet, convert(input, input.getTraitSet().replace(OLAPRel.CONVENTION)), sort.getCollation(), sort.offset, sort.fetch); }
@Override public RelNode convert(RelNode rel) { final Window window = (Window) rel; final RelTraitSet traitSet = window.getTraitSet().replace(OLAPRel.CONVENTION); final RelNode input = window.getInput(); return new OLAPWindowRel(rel.getCluster(), traitSet, convert(input, input.getTraitSet().replace(OLAPRel.CONVENTION)), window.constants, window.getRowType(), window.groups); } }
public void onMatch(RelOptRuleCall call) { final HiveFilter filter = call.rel(0); final HiveSortLimit sort = call.rel(1); final RelNode newFilter = filter.copy(sort.getInput().getTraitSet(), ImmutableList.<RelNode>of(sort.getInput())); final HiveSortLimit newSort = sort.copy(sort.getTraitSet(), newFilter, sort.collation, sort.offset, sort.fetch); call.transformTo(newSort); }
@Override public RelNode convert(RelNode rel) { LogicalFilter filter = (LogicalFilter) rel; RelTraitSet origTraitSet = filter.getTraitSet(); RelTraitSet traitSet = origTraitSet.replace(OLAPRel.CONVENTION).simplify(); return new OLAPFilterRel(filter.getCluster(), traitSet, convert(filter.getInput(), filter.getInput().getTraitSet().replace(OLAPRel.CONVENTION)), filter.getCondition()); } }