// get output columns
Set<Integer> cols = (Set<Integer>)op.getAnnotation(REQUIREDCOLS);
// build foreach inner plan
List<LogicalExpressionPlan> exps = new ArrayList<LogicalExpressionPlan>();
LOGenerate gen = new LOGenerate(innerPlan, exps, new boolean[cols.size()]);
innerPlan.add(gen);
LogicalSchema schema = op.getSchema();
for (int i=0, j=0; i<schema.size(); i++) {
if (!cols.contains(i)) {