code: func (s *Session) FetchNext(id uint64, resultFieldSet *ResultFieldSet, fieldValues *FieldValues) (PartAttributes, error) {
  	s.mu.Lock()
  	defer s.mu.Unlock()
  
  	s.resultsetID.id = &id
  	if err := s.writeRequest(mtFetchNext, false, s.resultsetID, fetchsize(s.prm.FetchSize())); err != nil {
  		return nil, err
  	}
  
  	f := func(p replyPart) {
  
  		switch p := p.(type) {
  
  		case *resultset:
  			p.s = s
  			p.resultFieldSet = resultFieldSet
  			p.fieldValues = fieldValues
  		}
  	}
  
  	if err := s.readReply(f); err != nil {
  		return nil, err
  	}
  
  	return s.ph.partAttributes, nil
  }
docs: // FetchNext fetches next chunk in query result set.