code: func (e *CheckTableExec) Next(ctx context.Context, req *chunk.RecordBatch) error {
  	if e.done {
  		return nil
  	}
  	defer func() { e.done = true }()
  	for _, t := range e.tables {
  		dbName := t.DBInfo.Name
  		tb, err := e.is.TableByName(dbName, t.Name)
  		if err != nil {
  			return err
  		}
  		if tb.Meta().GetPartitionInfo() != nil {
  			err = e.doCheckPartitionedTable(tb.(table.PartitionedTable))
  		} else {
  			err = e.doCheckTable(tb)
  		}
  		if err != nil {
  			logutil.Logger(ctx).Warn("check table failed", zap.String("tableName", t.Name.O), zap.Error(err))
  			if admin.ErrDataInConsistent.Equal(err) {
  				return ErrAdminCheckTable.GenWithStack("%v err:%v", t.Name, err)
  			}
  
  			return errors.Errorf("%v err:%v", t.Name, err)
  		}
  	}
  	return nil
  }
docs: // Next implements the Executor Next interface.