internal/protocol/session.go
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
}
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
}
// FetchNext fetches next chunk in query result set.