final RelNode newJoin = HiveJoin.getJoin(rel.getCluster(), leftFrame.r, rightFrame.r, decorrelateExpr(rel.getCondition()), rel.getJoinType() );
LogicalProject project, int nullIndicatorPos) { final RelDataTypeFactory typeFactory = join.getCluster().getTypeFactory(); final RelNode left = join.getLeft(); final JoinRelType joinType = join.getJoinType();
RelOptCluster cluster = join.getCluster(); RelNode newRel; try {
@Override public LogicalJoin copy(RelTraitSet traitSet, RexNode conditionExpr, RelNode left, RelNode right, JoinRelType joinType, boolean semiJoinDone) { assert traitSet.containsIfApplicable(Convention.NONE); return new LogicalJoin(getCluster(), getCluster().traitSetOf(Convention.NONE), left, right, conditionExpr, variablesSet, joinType, semiJoinDone, systemFieldList); }
@Override public LogicalJoin copy(RelTraitSet traitSet, RexNode conditionExpr, RelNode left, RelNode right, JoinRelType joinType, boolean semiJoinDone) { assert traitSet.containsIfApplicable(Convention.NONE); return new LogicalJoin(getCluster(), getCluster().traitSetOf(Convention.NONE), left, right, conditionExpr, variablesSet, joinType, semiJoinDone, systemFieldList); }
if (hasEquijoins && join.getJoinType()== JoinRelType.INNER) { addFilter = true; newJoinCondition = buildJoinCondition(convertedLeft, convertedRight, leftKeys, rightKeys, filterNulls, join.getCluster().getRexBuilder()); newJoinCondition = buildJoinCondition(convertedLeft, convertedRight, leftKeys, rightKeys, filterNulls, join.getCluster().getRexBuilder()); RelNode joinRel = new DrillJoinRel(join.getCluster(), traits, convertedLeft, convertedRight, newJoinCondition, join.getJoinType(), leftKeys, rightKeys); call.transformTo(joinRel); } else { RelNode joinRel = new DrillJoinRel(join.getCluster(), traits, convertedLeft, convertedRight, newJoinCondition, join.getJoinType(), leftKeys, rightKeys); call.transformTo(new DrillFilterRel(join.getCluster(), traits, joinRel, remaining));
@Override public RelNode visit(LogicalJoin join) { for (;;) { RelNode rel = super.visit(join); if (rel == join || !(rel instanceof LogicalJoin)) { return rel; } join = (LogicalJoin) rel; final ProjectFilterTable left = ProjectFilterTable.of(join.getLeft()); if (left != null) { final ProjectFilterTable right = ProjectFilterTable.of(join.getRight()); if (right != null) { try { match(left, right, join.getCluster()); } catch (Util.FoundOne e) { return (RelNode) e.getNode(); } } } } }
@Override public RelNode visit(LogicalJoin join) { for (;;) { RelNode rel = super.visit(join); if (rel == join || !(rel instanceof LogicalJoin)) { return rel; } join = (LogicalJoin) rel; final ProjectFilterTable left = ProjectFilterTable.of(join.getLeft()); if (left != null) { final ProjectFilterTable right = ProjectFilterTable.of(join.getRight()); if (right != null) { try { match(left, right, join.getCluster()); } catch (Util.FoundOne e) { return (RelNode) e.getNode(); } } } } }
final RelOptCluster cluster = join.getCluster(); RelNode newRel; try {
final RelOptCluster cluster = join.getCluster(); RelNode newRel; try {
LogicalProject project, int nullIndicatorPos) { final RelDataTypeFactory typeFactory = join.getCluster().getTypeFactory(); final RelNode left = join.getLeft(); final JoinRelType joinType = join.getJoinType();
LogicalProject project, int nullIndicatorPos) { final RelDataTypeFactory typeFactory = join.getCluster().getTypeFactory(); final RelNode left = join.getLeft(); final JoinRelType joinType = join.getJoinType();
LogicalProject project, int nullIndicatorPos) { final RelDataTypeFactory typeFactory = join.getCluster().getTypeFactory(); final RelNode left = join.getLeft(); final JoinRelType joinType = join.getJoinType();
final RelOptCluster cluster = join.getCluster(); final RelTraitSet traitSet = join.getTraitSet().replace(EnumerableConvention.INSTANCE);
final RelOptCluster cluster = join.getCluster(); final RelTraitSet traitSet = join.getTraitSet().replace(EnumerableConvention.INSTANCE);
RelOptCluster cluster = join.getCluster(); RelNode newRel; try {
final RelNode left = join.getLeft(); final int leftFieldCount = left.getRowType().getFieldCount(); final RelOptCluster cluster = join.getCluster(); final RexBuilder rexBuilder = cluster.getRexBuilder(); final RelBuilder relBuilder = call.builder();
final RelNode left = join.getLeft(); final int leftFieldCount = left.getRowType().getFieldCount(); final RelOptCluster cluster = join.getCluster(); final RexBuilder rexBuilder = cluster.getRexBuilder(); final RelBuilder relBuilder = call.builder();