@Override public Void visitTableScan(TableScan scan, List<Void> inputStreams) throws Exception { pw.print(String.format(STAGE_ENUMERABLE_TABLE_SCAN, getStageName(scan))); return null; }
@Override public Void visitDelta(Delta delta, List<Void> inputStreams) throws Exception { pw.print(String.format(STAGE_PASSTHROUGH, getStageName(delta))); return null; }
private void beginStage(RelNode n) { pw.print(String.format(STAGE_PROLOGUE, getStageName(n))); }
private void beginJoinStage(Join join) { int[] ordinals = new int[2]; if (!RelOptUtil.analyzeSimpleEquiJoin((LogicalJoin) join, ordinals)) { throw new UnsupportedOperationException("Only simple equi joins are supported"); } pw.print(String.format(JOIN_STAGE_PROLOGUE, getStageName(join), getStageName(join.getLeft()), getStageName(join.getRight()), ordinals[0], ordinals[1])); }
private void beginAggregateStage(Aggregate n) { pw.print(String.format(AGGREGATE_STAGE_PROLOGUE, getStageName(n), getGroupByIndices(n), emitAggregateStmts(n))); }
private void doChainOperators(PrintWriter pw, RelNode node, Set<TableScan> tables, String parentCtx) { pw.print( String.format(" ChannelContext CTX_%d = Channels.chain(%2$s, %3$s);\n", node.getId(), parentCtx, RelNodeCompiler.getStageName(node))); String currentCtx = String.format("CTX_%d", node.getId()); if (node instanceof TableScan) { tables.add((TableScan) node); } for (RelNode i : node.getInputs()) { doChainOperators(pw, i, tables, currentCtx); } }