@Override public RelNode convert(RelNode rel) { final Calc calc = (Calc) rel; final RelNode input = calc.getInput(); return new StreamsCalcRel(calc.getCluster(), calc.getTraitSet().replace(StreamsLogicalConvention.INSTANCE), convert(input, input.getTraitSet().replace(StreamsLogicalConvention.INSTANCE)), calc.getProgram()); } }
/** * Constructs a CalcRelSplitter. * * @param calc Calc to split * @param relTypes Array of rel types, e.g. {Java, Fennel}. Must be * distinct. */ CalcRelSplitter(Calc calc, RelBuilder relBuilder, RelType[] relTypes) { this.relBuilder = relBuilder; for (int i = 0; i < relTypes.length; i++) { assert relTypes[i] != null; for (int j = 0; j < i; j++) { assert relTypes[i] != relTypes[j] : "Rel types must be distinct"; } } this.program = calc.getProgram(); this.cluster = calc.getCluster(); this.traits = calc.getTraitSet(); this.typeFactory = calc.getCluster().getTypeFactory(); this.child = calc.getInput(); this.relTypes = relTypes; }
/** * Constructs a CalcRelSplitter. * * @param calc Calc to split * @param relTypes Array of rel types, e.g. {Java, Fennel}. Must be * distinct. */ CalcRelSplitter(Calc calc, RelBuilder relBuilder, RelType[] relTypes) { this.relBuilder = relBuilder; for (int i = 0; i < relTypes.length; i++) { assert relTypes[i] != null; for (int j = 0; j < i; j++) { assert relTypes[i] != relTypes[j] : "Rel types must be distinct"; } } this.program = calc.getProgram(); this.cluster = calc.getCluster(); this.traits = calc.getTraitSet(); this.typeFactory = calc.getCluster().getTypeFactory(); this.child = calc.getInput(); this.relTypes = relTypes; }
public boolean isValid(Litmus litmus, Context context) { if (!RelOptUtil.equal( "program's input type", program.getInputRowType(), "child's output type", getInput().getRowType(), litmus)) { return litmus.fail(null); } if (!program.isValid(litmus, context)) { return litmus.fail(null); } if (!program.isNormalized(litmus, getCluster().getRexBuilder())) { return litmus.fail(null); } return litmus.succeed(); }
new RexProgramBuilder( calc.getInput().getRowType(), calc.getCluster().getRexBuilder()); final List<RexLocalRef> list = new ArrayList<>(); for (RexNode expr : expandedExprList) {
new RexProgramBuilder( calc.getInput().getRowType(), calc.getCluster().getRexBuilder()); final List<RexLocalRef> list = new ArrayList<>(); for (RexNode expr : expandedExprList) {
public boolean isValid(Litmus litmus, Context context) { if (!RelOptUtil.equal( "program's input type", program.getInputRowType(), "child's output type", getInput().getRowType(), litmus)) { return litmus.fail(null); } if (!program.isValid(litmus, context)) { return litmus.fail(null); } if (!program.isNormalized(litmus, getCluster().getRexBuilder())) { return litmus.fail(null); } return litmus.succeed(); }
topCalc.getProgram(), bottomCalc.getProgram(), topCalc.getCluster().getRexBuilder()); assert mergedProgram.getOutputRowType() == topProgram.getOutputRowType();
topCalc.getProgram(), bottomCalc.getProgram(), topCalc.getCluster().getRexBuilder()); assert mergedProgram.getOutputRowType() == topProgram.getOutputRowType();
topProgramBuilder.addIdentity(); final RelOptUtil.RexInputConverter rexInputConverter = new RelOptUtil.RexInputConverter(calc.getCluster().getRexBuilder(), origFields, joinRel.getRowType().getFieldList(),