code: func (e *CancelDDLJobsExec) Next(ctx context.Context, req *chunk.RecordBatch) error {
  	if e.runtimeStats != nil {
  		start := time.Now()
  		defer func() { e.runtimeStats.Record(time.Since(start), req.NumRows()) }()
  	}
  	req.GrowAndReset(e.maxChunkSize)
  	if e.cursor >= len(e.jobIDs) {
  		return nil
  	}
  	numCurBatch := mathutil.Min(req.Capacity(), len(e.jobIDs)-e.cursor)
  	for i := e.cursor; i < e.cursor+numCurBatch; i++ {
  		req.AppendString(0, fmt.Sprintf("%d", e.jobIDs[i]))
  		if e.errs[i] != nil {
  			req.AppendString(1, fmt.Sprintf("error: %v", e.errs[i]))
  		} else {
  			req.AppendString(1, "successful")
  		}
  	}
  	e.cursor += numCurBatch
  	return nil
  }
docs: // Next implements the Executor Next interface.