MCPcopy Create free account
hub / github.com/couchbase/moss / SeekTo

Method SeekTo

iterator_single.go:74–112  ·  view source on GitHub ↗
(seekToKey []byte)

Source from the content-addressed store, hash-verified

72}
73
74func (iter *iteratorSingle) SeekTo(seekToKey []byte) error {
75 key, _, err := iter.Current()
76 if err != nil && err != ErrIteratorDone {
77 return err
78 }
79
80 if key != nil {
81 cmp := bytes.Compare(seekToKey, key)
82 if cmp == 0 {
83 return nil
84 }
85
86 if cmp > 0 {
87 // Try a loop of naive Next()'s for several attempts.
88 err = naiveSeekTo(iter, seekToKey, DefaultNaiveSeekToMaxTries)
89 if err != ErrMaxTries {
90 return err
91 }
92 }
93 }
94
95 iter.op = 0
96 iter.k = nil
97 iter.v = nil
98
99 err = iter.sc.Seek(seekToKey)
100 if err != nil {
101 // we DO want to return ErrIteratorDone here
102 return err
103 }
104
105 iter.op, iter.k, iter.v = iter.sc.Current()
106 if !iter.iteratorOptions.IncludeDeletions &&
107 iter.op == OperationDel {
108 return iter.Next()
109 }
110
111 return nil
112}
113
114// Current returns ErrIteratorDone if the iterator is done.
115// Otherwise, Current() returns the current key and val, which should

Callers

nothing calls this directly

Calls 5

CurrentMethod · 0.95
NextMethod · 0.95
naiveSeekToFunction · 0.85
SeekMethod · 0.65
CurrentMethod · 0.65

Tested by

no test coverage detected