public List<FieldNode> genColLists(Operator<? extends OperatorDesc> curOp,
          Operator<? extends OperatorDesc> child)
      throws SemanticException {
    if (curOp.getChildOperators() == null) {
      return null;
    }
    if (child instanceof CommonJoinOperator) {
      int tag = child.getParentOperators().indexOf(curOp);
      return joinPrunedColLists.get(child).get((byte) tag);
    } else {
      return prunedColLists.get(child);
    }
  }
Creates the list of internal column names (represented by field nodes,
these names are used in the RowResolver and are different from the
external column names) that are needed in the subtree. These columns
eventually have to be selected from the table scan.

@param curOp The root of the operator subtree.
@param child The consumer.
@return a list of field nodes representing the internal column names.
ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcCtx.java