@Override
  public void process(Object row, int tag) throws HiveException {
    StructObjectInspector soi = (StructObjectInspector) inputObjInspectors[tag];
    if (tag == SELECT_TAG) {
      selectObjs.clear();
      selectObjs.addAll(soi.getStructFieldsDataAsList(row));
    } else if (tag == UDTF_TAG) {
      acc.clear();
      acc.addAll(selectObjs);
      acc.addAll(soi.getStructFieldsDataAsList(row));
      forward(acc, outputObjInspector);
    } else {
      throw new HiveException("Invalid tag");
    }

  }
An important assumption for processOp() is that for a given row from the
TS, the LVJ will first get the row from the left select operator, followed
by all the corresponding rows from the UDTF operator. And so on.
ql/src/java/org/apache/hadoop/hive/ql/exec/LateralViewJoinOperator.java