@Override public JoinRel copy( RelTraitSet traitSet, RexNode conditionExpr, RelNode left, RelNode right) { assert traitSet.containsIfApplicable(Convention.NONE); return new JoinRel( getCluster(), left, right, conditionExpr, this.joinType, new HashSet<String>(this.variablesStopped), this.semiJoinDone, systemFieldList); }
@Override public JoinRel copy(RelTraitSet traitSet, RexNode conditionExpr, RelNode left, RelNode right, JoinRelType joinType, boolean semiJoinDone) { assert traitSet.containsIfApplicable(Convention.NONE); return new JoinRel( getCluster(), left, right, conditionExpr, joinType, this.variablesStopped, semiJoinDone, this.systemFieldList); }
final RelTraitSet traits = join.getCluster().traitSetOf( Cascading.CONVENTION ); final RexNode newCondition = createCondition( join.getCluster().getRexBuilder(), newLeft, leftKeys, newRight, rightKeys ); final CascadingJoinRel newJoin = new CascadingJoinRel( join.getCluster(), traits, convert( newLeft, traits ), convert( newRight, traits ), newCondition, join.getJoinType(), join.getVariablesStopped(), 0 );
@Override public RelNode convert(RelNode rel) { JoinRel join = (JoinRel) rel; List<RelNode> newInputs = new ArrayList<RelNode>(); for (RelNode input : join.getInputs()) { if (!(input.getConvention() instanceof EnumerableConvention)) { input = convert( input, input.getTraitSet() .replace(EnumerableConvention.INSTANCE)); } newInputs.add(input); } try { return new EnumerableJoinRel( join.getCluster(), join.getTraitSet().replace(EnumerableConvention.INSTANCE), newInputs.get(0), newInputs.get(1), join.getCondition(), join.getJoinType(), join.getVariablesStopped()); } catch (InvalidRelException e) { tracer.warning(e.toString()); return null; } } }
@Override public RelNode convert(RelNode rel) { JoinRel join = (JoinRel) rel; List<RelNode> newInputs = new ArrayList<RelNode>(); for (RelNode input : join.getInputs()) { if (!(input.getConvention() == getOutTrait())) { input = convert( input, input.getTraitSet().replace(out)); } newInputs.add(input); } try { return new JdbcJoinRel( join.getCluster(), join.getTraitSet().replace(out), newInputs.get(0), newInputs.get(1), join.getCondition(), join.getJoinType(), join.getVariablesStopped()); } catch (InvalidRelException e) { tracer.warning(e.toString()); return null; } } }
join.getCluster(), join.getTraitSet().replace(out), newInputs.get(0),
joinRel.getCluster(), joinRel.getLeft(), joinRel.getRight(), joinRel.getCluster().getRexBuilder().makeLiteral(true), joinRel.getJoinType(), Collections.<String>emptySet(),
origJoinRel.getCluster(), origJoinRel.getLeft(), origJoinRel.getRight(), origJoinRel.getCluster(), semiJoin, origJoinRel.getRight(),
} else { return RelOptUtil.andJoinFilters( joinRel.getCluster().getRexBuilder(), leftPostJoinFilter, rightPostJoinFilter);
if (left instanceof TableAccessRelBase && right instanceof TableAccessRelBase) { match(left, null, right, null, join.getCluster()); final ProjectRel leftProject = (ProjectRel) left; match(leftProject.getChild(), leftProject.getMapping(), right, null, join.getCluster()); final ProjectRel rightProject = (ProjectRel) right; match(left, null, rightProject.getChild(), rightProject.getMapping(), join.getCluster()); match(leftProject.getChild(), leftProject.getMapping(), rightProject.getChild(), rightProject.getMapping(), join.getCluster());
ProjectRel projRel, int nullIndicatorPos) { RelDataTypeFactory typeFactory = joinRel.getCluster().getTypeFactory(); RelNode leftInputRel = joinRel.getLeft(); JoinRelType joinType = joinRel.getJoinType();
rightFilter.accept( new RelOptUtil.RexInputConverter( joinRel.getCluster().getRexBuilder(), right.getRowType().getFieldList(), joinRel.getRowType().getFieldList(),
int nullIndicatorPos) RelDataTypeFactory typeFactory = joinRel.getCluster().getTypeFactory(); RelNode leftInputRel = joinRel.getLeft(); JoinRelType joinType = joinRel.getJoinType();
public void rewriteRel(JoinRel rel) { JoinRel newRel = new JoinRel( rel.getCluster(), getNewForOldRel(rel.getLeft()), getNewForOldRel(rel.getRight()), flattenFieldAccesses(rel.getCondition()), rel.getJoinType(), rel.getVariablesStopped()); setNewForOldRel(rel, newRel); }
public void rewriteRel(JoinRel rel) { JoinRel newRel = new JoinRel( rel.getCluster(), getNewForOldRel(rel.getLeft()), getNewForOldRel(rel.getRight()), flattenFieldAccesses(rel.getCondition()), rel.getJoinType(), rel.getVariablesStopped()); setNewForOldRel(rel, newRel); }
final List<Correlation> correlationList = Lists.newArrayList(); if (joinInfo.leftKeys.size() > 0) { final RelOptCluster cluster = join.getCluster(); final RexBuilder rexBuilder = cluster.getRexBuilder(); RexNode condition = null; join.getCluster(), left, right, joinInfo.getRemaining(join.getCluster().getRexBuilder()), correlationList, join.getJoinType());
origJoinRel.getCluster(), newInputs, newJoinFilter,
break; final RexBuilder rexBuilder = join.getCluster().getRexBuilder(); final RelDataType leftRowType = join.getLeft().getRowType(); final RelDataType rightRowType = join.getRight().getRowType(); join.getCluster(), join.getRight(), join.getLeft(),
final RelOptCluster cluster = join.getCluster(); RelNode newRel; try {
RelNode right) RexBuilder rexBuilder = joinRel.getCluster().getRexBuilder(); JoinRelType joinType = joinRel.getJoinType();