@Override public Void visitFilter(Filter filter, List<Void> inputStreams) throws Exception { beginStage(filter); List<RexNode> childExps = filter.getChildExps(); RelDataType inputRowType = filter.getInput(0).getRowType(); pw.print("Context context = new StreamlineContext(Processor.dataContext);\n"); pw.print("context.values = _data.toArray();\n"); pw.print("Object[] outputValues = new Object[1];\n"); pw.write(rexCompiler.compileToBlock(childExps, inputRowType).toString()); String r = "((Boolean) outputValues[0])"; if (filter.getCondition().getType().isNullable()) { pw.print(String.format(" if (%s != null && %s) { ctx.emit(_data); }\n", r, r)); } else { pw.print(String.format(" if (%s) { ctx.emit(_data); }\n", r, r)); } endStage(); return null; }