code: func (e *ShowExec) Next(ctx context.Context, req *chunk.RecordBatch) error {
  	req.GrowAndReset(e.maxChunkSize)
  	if e.result == nil {
  		e.result = e.newFirstChunk()
  		err := e.fetchAll()
  		if err != nil {
  			return errors.Trace(err)
  		}
  		iter := chunk.NewIterator4Chunk(e.result)
  		for colIdx := 0; colIdx < e.Schema().Len(); colIdx++ {
  			retType := e.Schema().Columns[colIdx].RetType
  			if !types.IsTypeVarchar(retType.Tp) {
  				continue
  			}
  			for row := iter.Begin(); row != iter.End(); row = iter.Next() {
  				if valLen := len(row.GetString(colIdx)); retType.Flen < valLen {
  					retType.Flen = valLen
  				}
  			}
  		}
  	}
  	if e.cursor >= e.result.NumRows() {
  		return nil
  	}
  	numCurBatch := mathutil.Min(req.Capacity(), e.result.NumRows()-e.cursor)
  	req.Append(e.result, e.cursor, e.cursor+numCurBatch)
  	e.cursor += numCurBatch
  	return nil
  }
docs: // Next implements the Executor Next interface.