@Override public DruidUnionRel asBindable() { return new DruidUnionRel( getCluster(), getTraitSet().replace(BindableConvention.INSTANCE), getQueryMaker(), rowType, rels.stream().map(rel -> RelOptRule.convert(rel, BindableConvention.INSTANCE)).collect(Collectors.toList()), limit ); }
@Override public DruidUnionRel asDruidConvention() { return new DruidUnionRel( getCluster(), getTraitSet().replace(DruidConvention.instance()), getQueryMaker(), rowType, rels.stream().map(rel -> RelOptRule.convert(rel, DruidConvention.instance())).collect(Collectors.toList()), limit ); }
@Override public DruidSemiJoin asBindable() { return new DruidSemiJoin( getCluster(), getTraitSet().replace(BindableConvention.INSTANCE), left, RelOptRule.convert(right, BindableConvention.INSTANCE), leftExpressions, rightKeys, maxSemiJoinRowsInMemory, getQueryMaker() ); }
@Override public DruidOuterQueryRel asDruidConvention() { return new DruidOuterQueryRel( getCluster(), getTraitSet().plus(DruidConvention.instance()), RelOptRule.convert(sourceRel, DruidConvention.instance()), partialQuery, getQueryMaker() ); }
@Override public DruidSemiJoin asDruidConvention() { return new DruidSemiJoin( getCluster(), getTraitSet().replace(DruidConvention.instance()), left, RelOptRule.convert(right, DruidConvention.instance()), leftExpressions, rightKeys, maxSemiJoinRowsInMemory, getQueryMaker() ); }
/** * Converts a list of relational expressions. * * @param rels Relational expressions * @param trait Trait to add to each relational expression * @return List of converted relational expressions, never null */ protected static List<RelNode> convertList(List<RelNode> rels, final RelTrait trait) { return Lists.transform(rels, rel -> convert(rel, rel.getTraitSet().replace(trait))); }
/** * Converts a list of relational expressions. * * @param rels Relational expressions * @param trait Trait to add to each relational expression * @return List of converted relational expressions, never null */ protected static List<RelNode> convertList(List<RelNode> rels, final RelTrait trait) { return Lists.transform(rels, rel -> convert(rel, rel.getTraitSet().replace(trait))); }
@Override public DruidUnionRel asBindable() { return new DruidUnionRel( getCluster(), getTraitSet().replace(BindableConvention.INSTANCE), getQueryMaker(), rowType, rels.stream().map(rel -> RelOptRule.convert(rel, BindableConvention.INSTANCE)).collect(Collectors.toList()), limit ); }
@Override public DruidUnionRel asDruidConvention() { return new DruidUnionRel( getCluster(), getTraitSet().replace(DruidConvention.instance()), getQueryMaker(), rowType, rels.stream().map(rel -> RelOptRule.convert(rel, DruidConvention.instance())).collect(Collectors.toList()), limit ); }
@Override public RelNode createFilter(RelNode child, RexNode condition) { return FilterRel.create( RelOptRule.convert(child, child.getTraitSet().plus(Rel.LOGICAL).simplify()), condition); } }
RelNode newRel = RelOptRule.convert(candidateSet, traitSet.simplify()); if(transformedRels.contains(newRel)) { continue;
@Override public RelNode createJoin(RelNode left, RelNode right, RexNode condition, JoinRelType joinType, Set<String> variablesStopped, boolean semiJoinDone) { return new JoinRel( left.getCluster(), left.getTraitSet().plus(Rel.LOGICAL), RelOptRule.convert(left, left.getTraitSet().plus(Rel.LOGICAL).simplify()), RelOptRule.convert(right, right.getTraitSet().plus(Rel.LOGICAL).simplify()), condition, joinType); } }
@Override public RelNode createJoin(RelNode left, RelNode right, RexNode condition, Set<CorrelationId> variablesSet, JoinRelType joinType, boolean semiJoinDone) { return new JoinRel( left.getCluster(), left.getTraitSet().plus(Rel.LOGICAL), RelOptRule.convert(left, left.getTraitSet().plus(Rel.LOGICAL).simplify()), RelOptRule.convert(right, right.getTraitSet().plus(Rel.LOGICAL).simplify()), condition, joinType); }
@Override public DruidSemiJoin asBindable() { return new DruidSemiJoin( getCluster(), getTraitSet().replace(BindableConvention.INSTANCE), left, RelOptRule.convert(right, BindableConvention.INSTANCE), leftExpressions, rightKeys, maxSemiJoinRowsInMemory, getQueryMaker() ); }
public static RelNode convert(RelNode rel, RelTraitSet toTraits){ toTraits = toTraits.simplify(); PlannerSettings settings = PrelUtil.getSettings(rel.getCluster()); if(settings.isSingleMode()){ toTraits = toTraits.replace(DistributionTrait.ANY); } return RelOptRule.convert(rel, toTraits.simplify()); }
public static RelNode convert(RelNode rel, RelTraitSet toTraits) { toTraits = toTraits.simplify(); PlannerSettings settings = PrelUtil.getSettings(rel.getCluster()); if(settings.isSingleMode()){ toTraits = toTraits.replace(DrillDistributionTrait.ANY); } return RelOptRule.convert(rel, toTraits.simplify()); }
@Override public DruidOuterQueryRel asDruidConvention() { return new DruidOuterQueryRel( getCluster(), getTraitSet().plus(DruidConvention.instance()), RelOptRule.convert(sourceRel, DruidConvention.instance()), partialQuery, getQueryMaker() ); }
@Override public DruidSemiJoin asDruidConvention() { return new DruidSemiJoin( getCluster(), getTraitSet().replace(DruidConvention.instance()), left, RelOptRule.convert(right, DruidConvention.instance()), leftExpressions, rightKeys, maxSemiJoinRowsInMemory, getQueryMaker() ); }
boolean go(T n, RelNode candidateSet) throws E { if ( !(candidateSet instanceof RelSubset) ) { return false; } boolean transform = false; for (RelNode rel : ((RelSubset)candidateSet).getRelList()) { if (isPhysical(rel)) { RelNode newRel = RelOptRule.convert(candidateSet, rel.getTraitSet().plus(Prel.PHYSICAL).simplify()); RelNode out = convertChild(n, newRel); if (out != null) { call.transformTo(out); transform = true; } } } return transform; }
@Override public RelNode createProject(RelNode child, List<? extends RexNode> childExprs, List<String> fieldNames) { final RelOptCluster cluster = child.getCluster(); final RelDataType rowType = RexUtil.createStructType(cluster.getTypeFactory(), childExprs, fieldNames, SqlValidatorUtil.F_SUGGESTER); final RelNode project = ProjectRel.create( cluster, child.getTraitSet().plus(Rel.LOGICAL), RelOptRule.convert(child, child.getTraitSet().plus(Rel.LOGICAL).simplify()), childExprs, rowType); return project; } }