private void genAutoColumnStatsGatheringPipeline(Table table, Map<String, String> partSpec, Operator curr,
                                                   boolean isInsertInto, boolean useTableValueConstructor)
      throws SemanticException {
    LOG.info("Generate an operator pipeline to autogather column stats for table " + table.getTableName()
        + " in query " + ctx.getCmd());
    ColumnStatsAutoGatherContext columnStatsAutoGatherContext = null;
    columnStatsAutoGatherContext = new ColumnStatsAutoGatherContext(this, conf, curr, table, partSpec, isInsertInto, ctx);
    if (useTableValueConstructor) {
      // Table does not exist, use table value constructor to simulate
      columnStatsAutoGatherContext.insertTableValuesAnalyzePipeline();
    } else {
      // Table already exists
      columnStatsAutoGatherContext.insertAnalyzePipeline();
    }
    columnStatsAutoGatherContexts.add(columnStatsAutoGatherContext);
  }
Merge stmt with early split update may create several (2) writes to the same
table with the same {@link WriteType}, e.g. if original Merge stmt has both update and
delete clauses, and update is split into insert + delete, in which case it's not an
error
ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java