public MySqlClientBatchingBatcher(ConnectionManager connectionManager, IInterceptor interceptor)
      : base(connectionManager, interceptor) {
      batchSize = Factory.Settings.AdoBatchSize;
      currentBatch = CreateConfiguredBatch();

      //we always create this, because we need to deal with a scenario in which
      //the user change the logging configuration at runtime. Trying to put this
      //behind an if(log.IsDebugEnabled) will cause a null reference exception 
      //at that point.
      currentBatchCommandsLog = new StringBuilder().AppendLine("Batch commands:");
    }
    protected override void DoExecuteBatch(IDbCommand ps) {
      Log.DebugFormat("Executing batch");
      CheckReaders();
      if (Factory.Settings.SqlStatementLogger.IsDebugEnabled) {
        Factory.Settings.SqlStatementLogger.LogBatchCommand(currentBatchCommandsLog.ToString());
        currentBatchCommandsLog = new StringBuilder().AppendLine("Batch commands:");
      }

      int rowsAffected;
      try {
        rowsAffected = currentBatch.ExecuteNonQuery();
      }
      catch (DbException e) {
        throw ADOExceptionHelper.Convert(Factory.SQLExceptionConverter, e, "could not execute batch command.");
      }

      Expectations.VerifyOutcomeBatched(totalExpectedRowsAffected, rowsAffected);

      currentBatch.Dispose();
      totalExpectedRowsAffected = 0;
      currentBatch = CreateConfiguredBatch();
    }