@Override public EnumerableRel implementEnumerable(List<EnumerableRel> inputs) { if (getInput() instanceof OLAPFilterRel) { // merge project & filter OLAPFilterRel filter = (OLAPFilterRel) getInput(); RelNode inputOfFilter = inputs.get(0).getInput(0); RexProgram program = RexProgram.create(inputOfFilter.getRowType(), this.rewriteProjects, filter.getCondition(), this.rowType, getCluster().getRexBuilder()); return new EnumerableCalc(getCluster(), getCluster().traitSetOf(EnumerableConvention.INSTANCE), // inputOfFilter, program); } else { // keep project for table scan EnumerableRel input = sole(inputs); RexProgram program = RexProgram.create(input.getRowType(), this.rewriteProjects, null, this.rowType, getCluster().getRexBuilder()); return new EnumerableCalc(getCluster(), getCluster().traitSetOf(EnumerableConvention.INSTANCE), // input, program); } }
projects.add(rexBuilder.makeInputRef(enumerable, field)); RexProgram program = RexProgram.create(enumerable.getRowType(), projects, null, root.validatedRowType, rexBuilder); enumerable = EnumerableCalc.create(enumerable, program);
private String toElasticsearchQuery(EnumerableRel root) { try { EnumerableRelImplementor relImplementor = new EnumerableRelImplementor(root.getCluster().getRexBuilder(), ImmutableMap.of()); final ElasticsearchRel.Implementor elasticsearchImplementor = new ElasticsearchRel.Implementor(); RelDataType rowType = root.getRowType(); final PhysType physType = PhysTypeImpl.of(relImplementor.getTypeFactory(), rowType, Prefer.ARRAY.prefer(JavaRowFormat.ARRAY)); List<Pair<String, Class>> pairs = Pair .zip(ElasticsearchRules.elasticsearchFieldNames(rowType), new AbstractList<Class>() { @Override public Class get(int index) { return physType.fieldClass(index); } @Override public int size() { return rowType.getFieldCount(); } }); return elasticsearchImplementor.convert(root.getInput(0), pairs); } catch (IOException ex) { throw new RuntimeException(ex); } finally { Prepare.CatalogReader.THREAD_LOCAL.remove(); } }
projects.add(rexBuilder.makeInputRef(enumerable, field)); RexProgram program = RexProgram.create(enumerable.getRowType(), projects, null, root.validatedRowType, rexBuilder); enumerable = EnumerableCalc.create(enumerable, program);
final List<FlatProductInputType> inputTypes = new ArrayList<>(); for (RelDataTypeField field : child.getRowType().getFieldList()) { final RelDataType type = field.getType(); if (type instanceof MapSqlType) {
projects.add(rexBuilder.makeInputRef(enumerable, field)); RexProgram program = RexProgram.create(enumerable.getRowType(), projects, null, root.validatedRowType, rexBuilder); enumerable = EnumerableCalc.create(enumerable, program);
final List<FlatProductInputType> inputTypes = new ArrayList<>(); for (RelDataTypeField field : child.getRowType().getFieldList()) { final RelDataType type = field.getType(); if (type instanceof MapSqlType) {
case ARRAY: if (result.physType.getFormat() == JavaRowFormat.ARRAY && rootRel.getRowType().getFieldCount() == 1) { BlockBuilder bb = new BlockBuilder(); Expression e = null;
case ARRAY: if (result.physType.getFormat() == JavaRowFormat.ARRAY && rootRel.getRowType().getFieldCount() == 1) { BlockBuilder bb = new BlockBuilder(); Expression e = null;
public static Bindable toBindable(Map<String, Object> parameters, CalcitePrepare.SparkHandler spark, EnumerableRel rel, EnumerableRel.Prefer prefer) { EnumerableRelImplementor relImplementor = new EnumerableRelImplementor(rel.getCluster().getRexBuilder(), parameters); final ClassDeclaration expr = relImplementor.implementRoot(rel, prefer); String s = Expressions.toString(expr.memberDeclarations, "\n", false); if (CalcitePrepareImpl.DEBUG) { Util.debugCode(System.out, s); } Hook.JAVA_PLAN.run(s); try { if (spark != null && spark.enabled()) { return spark.compile(expr, s); } else { return getBindable(expr, s, rel.getRowType().getFieldCount()); } } catch (Exception e) { throw Helper.INSTANCE.wrap("Error while compiling generated Java code:\n" + s, e); } }
public static Bindable toBindable(Map<String, Object> parameters, CalcitePrepare.SparkHandler spark, EnumerableRel rel, EnumerableRel.Prefer prefer) { EnumerableRelImplementor relImplementor = new EnumerableRelImplementor(rel.getCluster().getRexBuilder(), parameters); final ClassDeclaration expr = relImplementor.implementRoot(rel, prefer); String s = Expressions.toString(expr.memberDeclarations, "\n", false); if (CalcitePrepareImpl.DEBUG) { Util.debugCode(System.out, s); } Hook.JAVA_PLAN.run(s); try { if (spark != null && spark.enabled()) { return spark.compile(expr, s); } else { return getBindable(expr, s, rel.getRowType().getFieldCount()); } } catch (Exception e) { throw Helper.INSTANCE.wrap("Error while compiling generated Java code:\n" + s, e); } }
@Override public EnumerableRel implementEnumerable(List<EnumerableRel> inputs) { if (getInput() instanceof OLAPFilterRel) { // merge project & filter OLAPFilterRel filter = (OLAPFilterRel) getInput(); RelNode inputOfFilter = inputs.get(0).getInput(0); RexProgram program = RexProgram.create(inputOfFilter.getRowType(), this.rewriteProjects, filter.getCondition(), this.rowType, getCluster().getRexBuilder()); return new EnumerableCalc(getCluster(), getCluster().traitSetOf(EnumerableConvention.INSTANCE), // inputOfFilter, program); } else { // keep project for table scan EnumerableRel input = sole(inputs); RexProgram program = RexProgram.create(input.getRowType(), this.rewriteProjects, null, this.rowType, getCluster().getRexBuilder()); return new EnumerableCalc(getCluster(), getCluster().traitSetOf(EnumerableConvention.INSTANCE), // input, program); } }
} else if (aggCalls.isEmpty() && groupSet.equals( ImmutableBitSet.range(child.getRowType().getFieldCount()))) { builder.add( Expressions.return_(
} else if (aggCalls.isEmpty() && groupSet.equals( ImmutableBitSet.range(child.getRowType().getFieldCount()))) { builder.add( Expressions.return_(