| 512 | } |
| 513 | |
| 514 | func (iter *iterator) next(dst ...interface{}) error { |
| 515 | if iter.cursor == nil { |
| 516 | return iter.setErr(db.ErrNoMoreRows) |
| 517 | } |
| 518 | |
| 519 | switch len(dst) { |
| 520 | case 0: |
| 521 | if ok := iter.cursor.Next(); !ok { |
| 522 | defer iter.Close() |
| 523 | err := iter.cursor.Err() |
| 524 | if err == nil { |
| 525 | err = db.ErrNoMoreRows |
| 526 | } |
| 527 | return err |
| 528 | } |
| 529 | return nil |
| 530 | case 1: |
| 531 | if err := fetchRow(iter, dst[0]); err != nil { |
| 532 | defer iter.Close() |
| 533 | return err |
| 534 | } |
| 535 | return nil |
| 536 | } |
| 537 | |
| 538 | return errors.New("Next does not currently supports more than one parameters") |
| 539 | } |
| 540 | |
| 541 | func (iter *iterator) Close() (err error) { |
| 542 | if iter.cursor != nil { |