/** * Do constant reduction using generated code. */ public void reduce(RexBuilder rexBuilder, List<RexNode> constExps, List<RexNode> reducedValues) { final String code = compile(rexBuilder, constExps, (list, index, storageType) -> { throw new UnsupportedOperationException(); }); final RexExecutable executable = new RexExecutable(code, constExps); executable.setDataContext(dataContext); executable.reduce(rexBuilder, constExps, reducedValues); }
/** * Do constant reduction using generated code. */ public void reduce(RexBuilder rexBuilder, List<RexNode> constExps, List<RexNode> reducedValues) { final String code = compile(rexBuilder, constExps, (list, index, storageType) -> { throw new UnsupportedOperationException(); }); final RexExecutable executable = new RexExecutable(code, constExps); executable.setDataContext(dataContext); executable.reduce(rexBuilder, constExps, reducedValues); }
private String compile(RexBuilder rexBuilder, List<RexNode> constExps, RexToLixTranslator.InputGetter getter) { final RelDataTypeFactory typeFactory = rexBuilder.getTypeFactory(); final RelDataType emptyRowType = typeFactory.builder().build(); return compile(rexBuilder, constExps, getter, emptyRowType); }
private String compile(RexBuilder rexBuilder, List<RexNode> constExps, RexToLixTranslator.InputGetter getter) { final RelDataTypeFactory typeFactory = rexBuilder.getTypeFactory(); final RelDataType emptyRowType = typeFactory.builder().build(); return compile(rexBuilder, constExps, getter, emptyRowType); }
/** * Creates an {@link RexExecutable} that allows to apply the * generated code during query processing (filter, projection). * * @param rexBuilder Rex builder * @param exps Expressions * @param rowType describes the structure of the input row. */ public RexExecutable getExecutable(RexBuilder rexBuilder, List<RexNode> exps, RelDataType rowType) { final JavaTypeFactoryImpl typeFactory = new JavaTypeFactoryImpl(rexBuilder.getTypeFactory().getTypeSystem()); final InputGetter getter = new DataContextInputGetter(rowType, typeFactory); final String code = compile(rexBuilder, exps, getter, rowType); return new RexExecutable(code, "generated Rex code"); }
/** * Creates an {@link RexExecutable} that allows to apply the * generated code during query processing (filter, projection). * * @param rexBuilder Rex builder * @param exps Expressions * @param rowType describes the structure of the input row. */ public RexExecutable getExecutable(RexBuilder rexBuilder, List<RexNode> exps, RelDataType rowType) { final JavaTypeFactoryImpl typeFactory = new JavaTypeFactoryImpl(rexBuilder.getTypeFactory().getTypeSystem()); final InputGetter getter = new DataContextInputGetter(rowType, typeFactory); final String code = compile(rexBuilder, exps, getter, rowType); return new RexExecutable(code, "generated Rex code"); }