@Override public Node implement(InterpreterImplementor implementor) { final Sink sink = implementor.compiler.sink(this); return () -> runQuery().accumulate( sink, (Sink theSink, Object[] in) -> { try { theSink.send(Row.of(in)); } catch (InterruptedException e) { throw Throwables.propagate(e); } return theSink; } ); }
@Override public boolean test(Values input) { Context calciteContext = new StormContext(dataContext); calciteContext.values = input.toArray(); filterInstance.execute(calciteContext, outputValues); return (outputValues[0] != null && (boolean) outputValues[0]); } }
@Override public void visit(RelNode node, int ordinal, RelNode parent) { if (node instanceof DruidRel) { datasourceNames.addAll(((DruidRel) node).getDataSourceNames()); } if (node instanceof Bindables.BindableTableScan) { Bindables.BindableTableScan bts = (Bindables.BindableTableScan) node; RelOptTable table = bts.getTable(); String tableName = table.getQualifiedName().get(0); datasourceNames.add(tableName); } node.childrenAccept(this); } }
public Enumerable<Object[]> bind(DataContext dataContext) { return new Interpreter(dataContext, getInput()); } }
final RexBuilder rexBuilder = bindableRel.getCluster().getRexBuilder(); for (int field : Pair.left(root.fields)) { projects.add(rexBuilder.makeInputRef(bindableRel, field)); bindableRel = new Bindables.BindableProject( bindableRel.getCluster(), bindableRel.getTraitSet(), bindableRel, projects, bindableRel.childrenAccept( new RelVisitor() final DataContext dataContext = plannerContext.createDataContext((JavaTypeFactory) planner.getTypeFactory()); final Supplier<Sequence<Object[]>> resultsSupplier = () -> { final Enumerable enumerable = theRel.bind(dataContext); final Enumerator enumerator = enumerable.enumerator(); return Sequences.withBaggage(new BaseSequence<>(
public Enumerable<Object[]> bind(DataContext dataContext) { return new Interpreter(dataContext, getInput()); } }
@Override public Values apply(Values input) { Context calciteContext = new StormContext(dataContext); calciteContext.values = input.toArray(); projectionInstance.execute(calciteContext, outputValues); return new Values(outputValues); } }
@Override public Iterable<Values> apply(Values input) { Context calciteContext = new StormContext(dataContext); calciteContext.values = input.toArray(); if (filterInstance != null) { filterInstance.execute(calciteContext, outputValues); // filtered out if (outputValues[0] == null || !((Boolean) outputValues[0])) { return Collections.emptyList(); } } if (projectionInstance != null) { projectionInstance.execute(calciteContext, outputValues); return Collections.singletonList(new Values(outputValues)); } else { return Collections.singletonList(new Values(input.toArray())); } } }