code: func (r *streamResult) readDataIfNecessary(ctx context.Context) error {
  	if r.curr != nil && len(r.curr.RowsData) > 0 {
  		return nil
  	}
  
  	tmp := new(tipb.Chunk)
  	finish, err := r.readDataFromResponse(ctx, r.resp, tmp)
  	if err != nil {
  		return err
  	}
  	if finish {
  		r.curr = nil
  		return nil
  	}
  	r.curr = tmp
  	return nil
  }
docs: // readDataIfNecessary ensures there are some data in current chunk. If no more data, r.curr == nil.