@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()); } }
public LogicalFilter copy(RelTraitSet traitSet, RelNode input, RexNode condition) { assert traitSet.containsIfApplicable(Convention.NONE); return new LogicalFilter(getCluster(), traitSet, input, condition, variablesSet); }
public LogicalFilter copy(RelTraitSet traitSet, RelNode input, RexNode condition) { assert traitSet.containsIfApplicable(Convention.NONE); return new LogicalFilter(getCluster(), traitSet, input, condition, variablesSet); }
mapSubQueryNodeToCorSet.get(filter), filter.getCondition(), filter.getCluster().getRexBuilder(), maxCnfNodeCount, corConditions,
@Deprecated // to be removed before 2.0 public static RexNode splitCorrelatedFilterCondition( LogicalFilter filter, List<RexInputRef> joinKeys, List<RexNode> correlatedJoinKeys) { final List<RexNode> nonEquiList = new ArrayList<>(); splitCorrelatedFilterCondition( filter, filter.getCondition(), joinKeys, correlatedJoinKeys, nonEquiList); // Convert the remainders into a list that are AND'ed together. return RexUtil.composeConjunction( filter.getCluster().getRexBuilder(), nonEquiList, true); }
@Deprecated // to be removed before 2.0 public static RexNode splitCorrelatedFilterCondition( LogicalFilter filter, List<RexInputRef> joinKeys, List<RexNode> correlatedJoinKeys) { final List<RexNode> nonEquiList = new ArrayList<>(); splitCorrelatedFilterCondition( filter, filter.getCondition(), joinKeys, correlatedJoinKeys, nonEquiList); // Convert the remainders into a list that are AND'ed together. return RexUtil.composeConjunction( filter.getCluster().getRexBuilder(), nonEquiList, true); }
public static RexNode splitCorrelatedFilterCondition( LogicalFilter filter, List<RexNode> joinKeys, List<RexNode> correlatedJoinKeys, boolean extractCorrelatedFieldAccess) { final List<RexNode> nonEquiList = new ArrayList<>(); splitCorrelatedFilterCondition( filter, filter.getCondition(), joinKeys, correlatedJoinKeys, nonEquiList, extractCorrelatedFieldAccess); // Convert the remainders into a list that are AND'ed together. return RexUtil.composeConjunction( filter.getCluster().getRexBuilder(), nonEquiList, true); }
public static RexNode splitCorrelatedFilterCondition( LogicalFilter filter, List<RexNode> joinKeys, List<RexNode> correlatedJoinKeys, boolean extractCorrelatedFieldAccess) { final List<RexNode> nonEquiList = new ArrayList<>(); splitCorrelatedFilterCondition( filter, filter.getCondition(), joinKeys, correlatedJoinKeys, nonEquiList, extractCorrelatedFieldAccess); // Convert the remainders into a list that are AND'ed together. return RexUtil.composeConjunction( filter.getCluster().getRexBuilder(), nonEquiList, true); }
@Override public RelNode visit(final LogicalFilter filter) { final RelBuilder relBuilder = newCalciteRelBuilderWithoutContext(filter.getCluster()); RelNode input = filter.getInput().accept(this); relBuilder.push(input); RexNode newCondition = filter.getCondition().accept(new RexShuttle() { @Override public RexNode visitInputRef(RexInputRef inputRef) { return relBuilder.field(filter.getRowType().getFieldNames().get(inputRef.getIndex())); } }); relBuilder.filter(newCondition); return relBuilder.build(); }
@Override public void onMatch(RelOptRuleCall call) { final LogicalFilter filter = (LogicalFilter) call.rel(0); final RelNode input = filter.getInput(); //final RelTraitSet traits = filter.getTraitSet().plus(Rel.LOGICAL); final RelNode convertedInput = convert(input, input.getTraitSet().plus(Rel.LOGICAL).simplify()); call.transformTo(new FilterRel(filter.getCluster(), convertedInput.getTraitSet(), convertedInput, filter.getCondition())); } }
@Override public void onMatch(RelOptRuleCall call) { final LogicalFilter filter = call.rel(0); final RelNode input = filter.getInput(); final RelNode convertedInput = convert(input, input.getTraitSet().plus(DrillRel.DRILL_LOGICAL).simplify()); call.transformTo(new DrillFilterRel( filter.getCluster(), convertedInput.getTraitSet(), convertedInput, filter.getCondition())); } }
@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()); } }
public void onMatch(RelOptRuleCall call) { final LogicalFilter filter = call.rel(0); final LogicalProject project = call.rel(1); final List<RexNode> newProjects = new ArrayList<>(project.getProjects()); newProjects.add(filter.getCondition()); final RelOptCluster cluster = filter.getCluster(); RelDataType newRowType = cluster.getTypeFactory().builder() .addAll(project.getRowType().getFieldList()) .add("condition", Util.last(newProjects).getType()) .build(); final RelNode newProject = project.copy(project.getTraitSet(), project.getInput(), newProjects, newRowType); final RexInputRef newCondition = cluster.getRexBuilder().makeInputRef(newProject, newProjects.size() - 1); call.transformTo(LogicalFilter.create(newProject, newCondition)); } }
public void onMatch(RelOptRuleCall call) { final LogicalFilter filter = call.rel(0); final LogicalProject project = call.rel(1); final List<RexNode> newProjects = new ArrayList<>(project.getProjects()); newProjects.add(filter.getCondition()); final RelOptCluster cluster = filter.getCluster(); RelDataType newRowType = cluster.getTypeFactory().builder() .addAll(project.getRowType().getFieldList()) .add("condition", Util.last(newProjects).getType()) .build(); final RelNode newProject = project.copy(project.getTraitSet(), project.getInput(), newProjects, newRowType); final RexInputRef newCondition = cluster.getRexBuilder().makeInputRef(newProject, newProjects.size() - 1); call.transformTo(LogicalFilter.create(newProject, newCondition)); } }
RexBuilder rexBuilder = filter.getCluster().getRexBuilder(); List<RelDataTypeField> origFields = funcRel.getRowType().getFieldList();
RexBuilder rexBuilder = filter.getCluster().getRexBuilder(); List<RelDataTypeField> origFields = funcRel.getRowType().getFieldList();
public void onMatch(RelOptRuleCall call) { final LogicalFilter filter = call.rel(0); final RelNode rel = filter.getInput(); // Create a program containing a filter. final RexBuilder rexBuilder = filter.getCluster().getRexBuilder(); final RelDataType inputRowType = rel.getRowType(); final RexProgramBuilder programBuilder = new RexProgramBuilder(inputRowType, rexBuilder); programBuilder.addIdentity(); programBuilder.addCondition(filter.getCondition()); final RexProgram program = programBuilder.getProgram(); final LogicalCalc calc = LogicalCalc.create(rel, program); call.transformTo(calc); } }
public void onMatch(RelOptRuleCall call) { final LogicalFilter filter = call.rel(0); final RelNode rel = filter.getInput(); // Create a program containing a filter. final RexBuilder rexBuilder = filter.getCluster().getRexBuilder(); final RelDataType inputRowType = rel.getRowType(); final RexProgramBuilder programBuilder = new RexProgramBuilder(inputRowType, rexBuilder); programBuilder.addIdentity(); programBuilder.addCondition(filter.getCondition()); final RexProgram program = programBuilder.getProgram(); final LogicalCalc calc = LogicalCalc.create(rel, program); call.transformTo(calc); } }
final RexBuilder rexBuilder = filter.getCluster().getRexBuilder(); final RexProgramBuilder progBuilder = new RexProgramBuilder(
final RexBuilder rexBuilder = filter.getCluster().getRexBuilder(); final RexProgramBuilder progBuilder = new RexProgramBuilder(