@Override
public LogicalNode visitProjection(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block,
ProjectionNode projection, Stack<LogicalNode> stack) throws TajoException {
super.visitProjection(context, plan, block, projection, stack);
int [] childIds = registerGetChildIds(context, projection);
PlanProto.ProjectionNode.Builder projectionBuilder = PlanProto.ProjectionNode.newBuilder();
projectionBuilder.setChildSeq(childIds[0]);
projectionBuilder.addAllTargets(
ProtoUtil.<PlanProto.Target>toProtoObjects(projection.getTargets().toArray(new ProtoObject[projection.getTargets().size()])));
projectionBuilder.setDistinct(projection.isDistinct());
PlanProto.LogicalNode.Builder nodeBuilder = createNodeBuilder(context, projection);
nodeBuilder.setProjection(projectionBuilder);
context.treeBuilder.addNodes(nodeBuilder);
return projection;
}