private boolean startImplicitTxn() {
    //this is dumb. HiveOperation is not always set. see HIVE-16447/HIVE-16443
    HiveOperation hiveOperation = queryState.getHiveOperation();
    switch (hiveOperation == null ? HiveOperation.QUERY : hiveOperation) {
      case COMMIT:
      case ROLLBACK:
      case SWITCHDATABASE:
      case SET_AUTOCOMMIT:
        /**
         * autocommit is here for completeness.  TM doesn't use it.  If we want to support JDBC
         * semantics (or any other definition of autocommit) it should be done at session level.
         */
      case SHOWDATABASES:
      case SHOWTABLES:
      case SHOW_TABLESTATUS:
      case SHOW_TBLPROPERTIES:
      case SHOWCOLUMNS:
      case SHOWFUNCTIONS:
      case SHOWPARTITIONS:
      case SHOWLOCKS:
      case SHOWVIEWS:
      case SHOW_ROLES:
      case SHOW_ROLE_PRINCIPALS:
      case SHOW_COMPACTIONS:
      case SHOW_TRANSACTIONS:
      case ABORT_TRANSACTIONS:
      case KILL_QUERY:
        return false;
      //this implies that no locks are needed for such a command
      default:
        return true; // TODO: check if we could optimize !context.isExplainPlan()
    }
  }
Last repl id should be captured before opening txn by current REPL DUMP operation.
This is needed to avoid losing data which are added/modified by concurrent txns when bootstrap
dump in progress.
@param conf Query configurations
@throws HiveException
@throws TException
ql/src/java/org/apache/hadoop/hive/ql/Compiler.java