Skip to content
This repository was archived by the owner on Jul 21, 2025. It is now read-only.

Commit 3f45c19

Browse files
committed
iter: make close compatible with gocql
1 parent 24d89b1 commit 3f45c19

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

query.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package scylla
22

33
import (
44
"context"
5+
"errors"
56
"fmt"
67

78
"github.com/scylladb/scylla-go-driver/frame"
@@ -346,6 +347,8 @@ type Iter struct {
346347
nextCh chan transport.QueryResult
347348
errCh chan error
348349
closed bool
350+
351+
err error
349352
}
350353

351354
var (
@@ -367,16 +370,18 @@ func (it *Iter) NumRows() int {
367370

368371
func (it *Iter) Next() (frame.Row, error) {
369372
if it.closed {
370-
return nil, ErrClosedIter
373+
return nil, nil
371374
}
372375

373376
if it.pos >= it.rowCnt {
374377
select {
375378
case r := <-it.nextCh:
376379
it.result = r
377380
case err := <-it.errCh:
378-
it.Close()
379-
return nil, err
381+
if !errors.Is(err, ErrNoMoreRows) {
382+
it.err = err
383+
}
384+
return nil, it.Close()
380385
}
381386

382387
it.pos = 0
@@ -394,12 +399,13 @@ func (it *Iter) Next() (frame.Row, error) {
394399
return res, nil
395400
}
396401

397-
func (it *Iter) Close() {
402+
func (it *Iter) Close() error {
398403
if it.closed {
399-
return
404+
return it.err
400405
}
401406
it.closed = true
402407
close(it.requestCh)
408+
return it.err
403409
}
404410

405411
type iterWorker struct {

0 commit comments

Comments
 (0)