for (int i = 0; i < left.getInputs().size(); i++) { newInputs.add(leftMultiJoin.getInput(i)); projFieldsList.add(leftMultiJoin.getProjFields().get(i)); joinFieldRefCountsList.add( leftMultiJoin.getJoinFieldRefCountsMap().get(i).toIntArray()); newInputs.add(rightMultiJoin.getInput(i)); projFieldsList.add( rightMultiJoin.getProjFields().get(i)); joinFieldRefCountsList.add( rightMultiJoin.getJoinFieldRefCountsMap().get(i).toIntArray());
for (int i = 0; i < left.getInputs().size(); i++) { newInputs.add(leftMultiJoin.getInput(i)); projFieldsList.add(leftMultiJoin.getProjFields().get(i)); joinFieldRefCountsList.add( leftMultiJoin.getJoinFieldRefCountsMap().get(i).toIntArray()); newInputs.add(rightMultiJoin.getInput(i)); projFieldsList.add( rightMultiJoin.getProjFields().get(i)); joinFieldRefCountsList.add( rightMultiJoin.getJoinFieldRefCountsMap().get(i).toIntArray());
joinFactors = ImmutableList.copyOf(multiJoin.getInputs()); nJoinFactors = joinFactors.size(); projFields = multiJoin.getProjFields(); joinFieldRefCountsMap = multiJoin.getCopyJoinFieldRefCountsMap();
joinFactors = ImmutableList.copyOf(multiJoin.getInputs()); nJoinFactors = joinFactors.size(); projFields = multiJoin.getProjFields(); joinFieldRefCountsMap = multiJoin.getCopyJoinFieldRefCountsMap();
public void onMatch(RelOptRuleCall call) { LogicalProject project = call.rel(0); MultiJoin multiJoin = call.rel(1); // if all inputs have their projFields set, then projection information // has already been pushed into each input boolean allSet = true; for (int i = 0; i < multiJoin.getInputs().size(); i++) { if (multiJoin.getProjFields().get(i) == null) { allSet = false; break; } } if (allSet) { return; } // create a new MultiJoin that reflects the columns in the projection // above the MultiJoin final RelBuilder relBuilder = call.builder(); MultiJoin newMultiJoin = RelOptUtil.projectMultiJoin(multiJoin, project); relBuilder.push(newMultiJoin) .project(project.getProjects(), project.getRowType().getFieldNames()); call.transformTo(relBuilder.build()); } }
public void onMatch(RelOptRuleCall call) { LogicalProject project = call.rel(0); MultiJoin multiJoin = call.rel(1); // if all inputs have their projFields set, then projection information // has already been pushed into each input boolean allSet = true; for (int i = 0; i < multiJoin.getInputs().size(); i++) { if (multiJoin.getProjFields().get(i) == null) { allSet = false; break; } } if (allSet) { return; } // create a new MultiJoin that reflects the columns in the projection // above the MultiJoin final RelBuilder relBuilder = call.builder(); MultiJoin newMultiJoin = RelOptUtil.projectMultiJoin(multiJoin, project); relBuilder.push(newMultiJoin) .project(project.getProjects(), project.getRowType().getFieldNames()); call.transformTo(relBuilder.build()); } }
if (multiJoin.getProjFields().get(inputMapping.i) == null) { newProjFields.add(null); continue; if (multiJoin.getProjFields().get(inputMapping.i).get(pair.source)) { projBuilder.set(pair.target);
public void onMatch(RelOptRuleCall call) { LogicalFilter filter = call.rel(0); MultiJoin multiJoin = call.rel(1); MultiJoin newMultiJoin = new MultiJoin( multiJoin.getCluster(), multiJoin.getInputs(), multiJoin.getJoinFilter(), multiJoin.getRowType(), multiJoin.isFullOuterJoin(), multiJoin.getOuterJoinConditions(), multiJoin.getJoinTypes(), multiJoin.getProjFields(), multiJoin.getJoinFieldRefCountsMap(), filter.getCondition()); call.transformTo(newMultiJoin); } }
public void onMatch(RelOptRuleCall call) { LogicalFilter filter = call.rel(0); MultiJoin multiJoin = call.rel(1); MultiJoin newMultiJoin = new MultiJoin( multiJoin.getCluster(), multiJoin.getInputs(), multiJoin.getJoinFilter(), multiJoin.getRowType(), multiJoin.isFullOuterJoin(), multiJoin.getOuterJoinConditions(), multiJoin.getJoinTypes(), multiJoin.getProjFields(), multiJoin.getJoinFieldRefCountsMap(), filter.getCondition()); call.transformTo(newMultiJoin); } }