@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; } ); }
public JoinNode(Compiler compiler, Join rel) { this.leftSource = compiler.source(rel, 0); this.rightSource = compiler.source(rel, 1); this.sink = compiler.sink(rel); this.condition = compiler.compile(ImmutableList.of(rel.getCondition()), compiler.combinedRowType(rel.getInputs())); this.rel = rel; this.context = compiler.createContext(); }
public FilterNode(Compiler compiler, Filter rel) { super(compiler, rel); this.condition = compiler.compile(ImmutableList.of(rel.getCondition()), rel.getRowType()); this.context = compiler.createContext(); }
private static TableScanNode createScannable(Compiler compiler, TableScan rel, ImmutableList<RexNode> filters, ImmutableIntList projects, ScannableTable scannableTable) { final Enumerable<Row> rowEnumerable = Enumerables.toRow(scannableTable.scan(compiler.getDataContext())); return createEnumerable(compiler, rel, rowEnumerable, null, filters, projects); }
private TableScanNode(Compiler compiler, TableScan rel, Enumerable<Row> enumerable) { compiler.enumerable(rel, enumerable); }
public JoinNode(Compiler compiler, Join rel) { this.leftSource = compiler.source(rel, 0); this.rightSource = compiler.source(rel, 1); this.sink = compiler.sink(rel); this.condition = compiler.compile(ImmutableList.of(rel.getCondition()), compiler.combinedRowType(rel.getInputs())); this.rel = rel; this.context = compiler.createContext(); }
public FilterNode(Compiler compiler, Filter rel) { super(compiler, rel); this.condition = compiler.compile(ImmutableList.of(rel.getCondition()), rel.getRowType()); this.context = compiler.createContext(); }
private static TableScanNode createScannable(Compiler compiler, TableScan rel, ImmutableList<RexNode> filters, ImmutableIntList projects, ScannableTable scannableTable) { final Enumerable<Row> rowEnumerable = Enumerables.toRow(scannableTable.scan(compiler.getDataContext())); return createEnumerable(compiler, rel, rowEnumerable, null, filters, projects); }
private TableScanNode(Compiler compiler, TableScan rel, Enumerable<Row> enumerable) { compiler.enumerable(rel, enumerable); }
EnumerableNode(Enumerable<Object[]> enumerable, Compiler compiler, EnumerableInterpretable rel) { this.enumerable = enumerable; this.sink = compiler.sink(rel); }
private ImmutableList<Row> createRows(Compiler compiler, ImmutableList<ImmutableList<RexLiteral>> tuples) { final List<RexNode> nodes = new ArrayList<>(); for (ImmutableList<RexLiteral> tuple : tuples) { nodes.addAll(tuple); } final Scalar scalar = compiler.compile(nodes, null); final Object[] values = new Object[nodes.size()]; final Context context = compiler.createContext(); scalar.execute(context, values); final ImmutableList.Builder<Row> rows = ImmutableList.builder(); Object[] subValues = new Object[fieldCount]; for (int i = 0; i < values.length; i += fieldCount) { System.arraycopy(values, i, subValues, 0, fieldCount); rows.add(Row.asCopy(subValues)); } return rows.build(); }
public AggregateNode(Compiler compiler, Aggregate rel) { super(compiler, rel); this.dataContext = compiler.getDataContext(); ImmutableBitSet union = ImmutableBitSet.of(); if (rel.getGroupSets() != null) { for (ImmutableBitSet group : rel.getGroupSets()) { union = union.union(group); groups.add(new Grouping(group)); } } this.unionGroups = union; this.outputRowLength = unionGroups.cardinality() + (rel.indicator ? unionGroups.cardinality() : 0) + rel.getAggCallList().size(); ImmutableList.Builder<AccumulatorFactory> builder = ImmutableList.builder(); for (AggregateCall aggregateCall : rel.getAggCallList()) { builder.add(getAccumulator(aggregateCall, false)); } accumulatorFactories = builder.build(); }
EnumerableNode(Enumerable<Object[]> enumerable, Compiler compiler, EnumerableInterpretable rel) { this.enumerable = enumerable; this.sink = compiler.sink(rel); }
private ImmutableList<Row> createRows(Compiler compiler, ImmutableList<ImmutableList<RexLiteral>> tuples) { final List<RexNode> nodes = new ArrayList<>(); for (ImmutableList<RexLiteral> tuple : tuples) { nodes.addAll(tuple); } final Scalar scalar = compiler.compile(nodes, null); final Object[] values = new Object[nodes.size()]; final Context context = compiler.createContext(); scalar.execute(context, values); final ImmutableList.Builder<Row> rows = ImmutableList.builder(); Object[] subValues = new Object[fieldCount]; for (int i = 0; i < values.length; i += fieldCount) { System.arraycopy(values, i, subValues, 0, fieldCount); rows.add(Row.asCopy(subValues)); } return rows.build(); }
public AggregateNode(Compiler compiler, Aggregate rel) { super(compiler, rel); this.dataContext = compiler.getDataContext(); ImmutableBitSet union = ImmutableBitSet.of(); if (rel.getGroupSets() != null) { for (ImmutableBitSet group : rel.getGroupSets()) { union = union.union(group); groups.add(new Grouping(group)); } } this.unionGroups = union; this.outputRowLength = unionGroups.cardinality() + (rel.indicator ? unionGroups.cardinality() : 0) + rel.getAggCallList().size(); ImmutableList.Builder<AccumulatorFactory> builder = ImmutableList.builder(); for (AggregateCall aggregateCall : rel.getAggCallList()) { builder.add(getAccumulator(aggregateCall, false)); } accumulatorFactories = builder.build(); }
DruidQueryNode(Compiler interpreter, DruidQuery query) { this.query = query; this.sink = interpreter.sink(query); this.querySpec = query.getQuerySpec(); Hook.QUERY_PLAN.run(querySpec); }