public BlockStatement compileToBlock(List<RexNode> nodes, RelDataType inputRowType) { final RexProgramBuilder programBuilder = new RexProgramBuilder(inputRowType, rexBuilder); for (RexNode node : nodes) { programBuilder.addProject(node, null); } return compileToBlock(programBuilder.getProgram()); }
public String compile(List<RexNode> nodes, RelDataType inputRowType, String className) { final RexProgramBuilder programBuilder = new RexProgramBuilder(inputRowType, rexBuilder); for (RexNode node : nodes) { programBuilder.addProject(node, null); } return compile(programBuilder.getProgram(), className); }
@Override public EnumerableRel implementEnumerable(List<EnumerableRel> inputs) { // keep it for having clause RexBuilder rexBuilder = getCluster().getRexBuilder(); RelDataType inputRowType = getInput().getRowType(); RexProgramBuilder programBuilder = new RexProgramBuilder(inputRowType, rexBuilder); programBuilder.addIdentity(); programBuilder.addCondition(this.condition); RexProgram program = programBuilder.getProgram(); return new EnumerableCalc(getCluster(), getCluster().traitSetOf(EnumerableConvention.INSTANCE), // sole(inputs), program); }
/** * Converts the state of the program builder to an immutable program, * normalizing in the process. * * <p>It is OK to call this method, modify the program specification (by * adding projections, and so forth), and call this method again. */ public RexProgram getProgram() { return getProgram(true); }
/** * Converts the state of the program builder to an immutable program, * normalizing in the process. * * <p>It is OK to call this method, modify the program specification (by * adding projections, and so forth), and call this method again. */ public RexProgram getProgram() { return getProgram(true); }
public BlockStatement compileToBlock(List<RexNode> nodes, RelDataType inputRowType) { final RexProgramBuilder programBuilder = new RexProgramBuilder(inputRowType, rexBuilder); for (RexNode node : nodes) { programBuilder.addProject(node, null); } return compileToBlock(programBuilder.getProgram()); }
public String compile(List<RexNode> nodes, RelDataType inputRowType, String className) { final RexProgramBuilder programBuilder = new RexProgramBuilder(inputRowType, rexBuilder); for (RexNode node : nodes) { programBuilder.addProject(node, null); } return compile(programBuilder.getProgram(), className); }
/** * Creates a RexProgram corresponding to a LogicalFilter * * @param filterRel * the LogicalFilter * @return created RexProgram */ private RexProgram createProgram(Filter filterRel) { RexProgramBuilder programBuilder = new RexProgramBuilder(filterRel.getRowType(), filterRel.getCluster().getRexBuilder()); programBuilder.addIdentity(); programBuilder.addCondition(filterRel.getCondition()); return programBuilder.getProgram(); }
/** * Creates a RexProgram corresponding to a LogicalFilter * * @param filterRel the LogicalFilter * @return created RexProgram */ private RexProgram createProgram(Filter filterRel) { RexProgramBuilder programBuilder = new RexProgramBuilder( filterRel.getRowType(), filterRel.getCluster().getRexBuilder()); programBuilder.addIdentity(); programBuilder.addCondition(filterRel.getCondition()); return programBuilder.getProgram(); } }
/** * Creates a RexProgram corresponding to a LogicalFilter * * @param filterRel the LogicalFilter * @return created RexProgram */ private RexProgram createProgram(Filter filterRel) { RexProgramBuilder programBuilder = new RexProgramBuilder( filterRel.getRowType(), filterRel.getCluster().getRexBuilder()); programBuilder.addIdentity(); programBuilder.addCondition(filterRel.getCondition()); return programBuilder.getProgram(); } }
/** * Creates a RexProgram corresponding to a LogicalFilter * * @param filterRel the LogicalFilter * @return created RexProgram */ private RexProgram createProgram(Filter filterRel) { RexProgramBuilder programBuilder = new RexProgramBuilder( filterRel.getRowType(), filterRel.getCluster().getRexBuilder()); programBuilder.addIdentity(); programBuilder.addCondition(filterRel.getCondition()); return programBuilder.getProgram(); } }
/** * Tests construction and normalization of a RexProgram. */ @Test public void testNormalize() { final RexProgramBuilder builder = createProg(0); final String program = builder.getProgram(true).toString(); TestUtil.assertEqualsVerbose( "(expr#0..1=[{inputs}], expr#2=[+($t0, $t1)], expr#3=[1], " + "expr#4=[+($t0, $t3)], expr#5=[+($t2, $t4)], " + "expr#6=[+($t0, $t0)], a=[$t5], b=[$t6])", program); }
/** * Tests construction and normalization of a RexProgram. */ @Test public void testNormalize() { final RexProgramBuilder builder = createProg(0); final String program = builder.getProgram(true).toString(); TestUtil.assertEqualsVerbose( "(expr#0..1=[{inputs}], expr#2=[+($t0, $t1)], expr#3=[1], " + "expr#4=[+($t0, $t3)], expr#5=[+($t2, $t4)], " + "expr#6=[+($t0, $t0)], a=[$t5], b=[$t6])", program); }
/** * Checks translation of AND(x, x). */ @Test public void testDuplicateAnd() { // RexProgramBuilder used to translate AND(x, x) to x. // Now it translates it to AND(x, x). // The optimization of AND(x, x) => x occurs at a higher level. final RexProgramBuilder builder = createProg(2); final String program = builder.getProgram(true).toString(); TestUtil.assertEqualsVerbose( "(expr#0..1=[{inputs}], expr#2=[+($t0, $t1)], expr#3=[1], " + "expr#4=[+($t0, $t3)], expr#5=[+($t2, $t4)], " + "expr#6=[+($t0, $t0)], expr#7=[>($t2, $t0)], " + "a=[$t5], b=[$t6], $condition=[$t7])", program); }
/** * Checks translation of AND(x, x). */ @Test public void testDuplicateAnd() { // RexProgramBuilder used to translate AND(x, x) to x. // Now it translates it to AND(x, x). // The optimization of AND(x, x) => x occurs at a higher level. final RexProgramBuilder builder = createProg(2); final String program = builder.getProgram(true).toString(); TestUtil.assertEqualsVerbose( "(expr#0..1=[{inputs}], expr#2=[+($t0, $t1)], expr#3=[1], " + "expr#4=[+($t0, $t3)], expr#5=[+($t2, $t4)], " + "expr#6=[+($t0, $t0)], expr#7=[>($t2, $t0)], " + "a=[$t5], b=[$t6], $condition=[$t7])", program); }
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 EnumerableFilter filter = call.rel(0); final RelNode input = filter.getInput(); // Create a program containing a filter. final RexBuilder rexBuilder = filter.getCluster().getRexBuilder(); final RelDataType inputRowType = input.getRowType(); final RexProgramBuilder programBuilder = new RexProgramBuilder(inputRowType, rexBuilder); programBuilder.addIdentity(); programBuilder.addCondition(filter.getCondition()); final RexProgram program = programBuilder.getProgram(); final EnumerableCalc calc = EnumerableCalc.create(input, program); call.transformTo(calc); } }
public void onMatch(RelOptRuleCall call) { final EnumerableFilter filter = call.rel(0); final RelNode input = filter.getInput(); // Create a program containing a filter. final RexBuilder rexBuilder = filter.getCluster().getRexBuilder(); final RelDataType inputRowType = input.getRowType(); final RexProgramBuilder programBuilder = new RexProgramBuilder(inputRowType, rexBuilder); programBuilder.addIdentity(); programBuilder.addCondition(filter.getCondition()); final RexProgram program = programBuilder.getProgram(); final EnumerableCalc calc = EnumerableCalc.create(input, program); call.transformTo(calc); } }
@Override public EnumerableRel implementEnumerable(List<EnumerableRel> inputs) { // keep it for having clause RexBuilder rexBuilder = getCluster().getRexBuilder(); RelDataType inputRowType = getInput().getRowType(); RexProgramBuilder programBuilder = new RexProgramBuilder(inputRowType, rexBuilder); programBuilder.addIdentity(); programBuilder.addCondition(this.condition); RexProgram program = programBuilder.getProgram(); return new EnumerableCalc(getCluster(), getCluster().traitSetOf(EnumerableConvention.INSTANCE), // sole(inputs), program); }
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); } }