code: func (e *ChecksumTableExec) Open(ctx context.Context) error {
  	if err := e.baseExecutor.Open(ctx); err != nil {
  		return err
  	}
  
  	concurrency, err := getChecksumTableConcurrency(e.ctx)
  	if err != nil {
  		return err
  	}
  
  	tasks, err := e.buildTasks()
  	if err != nil {
  		return err
  	}
  
  	taskCh := make(chan *checksumTask, len(tasks))
  	resultCh := make(chan *checksumResult, len(tasks))
  	for i := 0; i < concurrency; i++ {
  		go e.checksumWorker(taskCh, resultCh)
  	}
  
  	for _, task := range tasks {
  		taskCh <- task
  	}
  	close(taskCh)
  
  	for i := 0; i < len(tasks); i++ {
  		result := <-resultCh
  		if result.Error != nil {
  			err = result.Error
  			logutil.Logger(ctx).Error("checksum failed", zap.Error(err))
  			continue
  		}
  		e.handleResult(result)
  	}
  	if err != nil {
  		return err
  	}
  
  	return nil
  }
docs: // Open implements the Executor Open interface.