@Override
  public void process(Object row, int tag) throws HiveException {
    if (LOG.isInfoEnabled()) {
      cntrs[tag]++;
      if (cntrs[tag] == nextCntrs[tag]) {
        LOG.info(id + ", tag=" + tag + ", forwarding " + cntrs[tag] + " rows");
        nextCntrs[tag] = getNextCntr(cntrs[tag]);
      }
    }

    int childrenDone = 0;
    for (int i = 0; i < childOperatorsArray.length; i++) {
      Operator<? extends OperatorDesc> child = childOperatorsArray[i];
      if (child.getDone()) {
        childrenDone++;
      } else {
        if (forward[tag]) {
          // No need to evaluate, just forward it.
          child.process(row, tag);
        } else {
          // Call the corresponding handler to evaluate this row and
          // forward the result
          child.process(handlers[tag].process(row), handlers[tag].getTag());
        }
      }
    }

    // if all children are done, this operator is also done
    if (childrenDone == childOperatorsArray.length) {
      setDone(true);
    }
  }
Calls initialize on each of the children with outputObjetInspector as the
output row format.
ql/src/java/org/apache/hadoop/hive/ql/exec/MuxOperator.java