private void logResuts(List<String> r, String header, String prefix) {
    LOG.info(prefix + " " + header);
    StringBuilder sb = new StringBuilder();
    int numLines = 0;
    for(String line : r) {
      numLines++;
      sb.append(prefix).append(line).append("\n");
    }
    LOG.info(sb.toString());
    LOG.info(prefix + " Printed " + numLines + " lines");
  }
check that we can specify insert columns

Need to figure out semantics: what if a row from base expr ends up in both Update and Delete clauses we'll write
Update event to 1 delta and Delete to another.  Given that we collapse events for same current txn for different stmt ids
to the latest one, delete will win.
In Acid 2.0 we'll end up with 2 Delete events for the same PK.  Logically should be OK, but may break Vectorized reader impl.... need to check

1:M from target to source results in ambiguous write to target - SQL Standard expects an error.  (I have an argument on how
to solve this with minor mods to Join operator written down somewhere)

Only need 1 Stats task for MERGE (currently we get 1 per branch).
Should also eliminate Move task - that's a general ACID task
ql/src/test/org/apache/hadoop/hive/ql/TestTxnCommands2.java