Upgrade versions of vendored libs
This commit is contained in:
70
vendor/github.com/cockroachdb/pebble/get_iter.go
generated
vendored
70
vendor/github.com/cockroachdb/pebble/get_iter.go
generated
vendored
@@ -25,7 +25,7 @@ type getIter struct {
|
||||
key []byte
|
||||
iter internalIterator
|
||||
rangeDelIter keyspan.FragmentIterator
|
||||
tombstone keyspan.Span
|
||||
tombstone *keyspan.Span
|
||||
levelIter levelIter
|
||||
level int
|
||||
batch *Batch
|
||||
@@ -33,7 +33,7 @@ type getIter struct {
|
||||
l0 []manifest.LevelSlice
|
||||
version *version
|
||||
iterKey *InternalKey
|
||||
iterValue []byte
|
||||
iterValue base.LazyValue
|
||||
err error
|
||||
}
|
||||
|
||||
@@ -47,29 +47,29 @@ func (g *getIter) String() string {
|
||||
return fmt.Sprintf("len(l0)=%d, len(mem)=%d, level=%d", len(g.l0), len(g.mem), g.level)
|
||||
}
|
||||
|
||||
func (g *getIter) SeekGE(key []byte, trySeekUsingNext bool) (*InternalKey, []byte) {
|
||||
func (g *getIter) SeekGE(key []byte, flags base.SeekGEFlags) (*InternalKey, base.LazyValue) {
|
||||
panic("pebble: SeekGE unimplemented")
|
||||
}
|
||||
|
||||
func (g *getIter) SeekPrefixGE(
|
||||
prefix, key []byte, trySeekUsingNext bool,
|
||||
) (*base.InternalKey, []byte) {
|
||||
prefix, key []byte, flags base.SeekGEFlags,
|
||||
) (*base.InternalKey, base.LazyValue) {
|
||||
panic("pebble: SeekPrefixGE unimplemented")
|
||||
}
|
||||
|
||||
func (g *getIter) SeekLT(key []byte) (*InternalKey, []byte) {
|
||||
func (g *getIter) SeekLT(key []byte, flags base.SeekLTFlags) (*InternalKey, base.LazyValue) {
|
||||
panic("pebble: SeekLT unimplemented")
|
||||
}
|
||||
|
||||
func (g *getIter) First() (*InternalKey, []byte) {
|
||||
func (g *getIter) First() (*InternalKey, base.LazyValue) {
|
||||
return g.Next()
|
||||
}
|
||||
|
||||
func (g *getIter) Last() (*InternalKey, []byte) {
|
||||
func (g *getIter) Last() (*InternalKey, base.LazyValue) {
|
||||
panic("pebble: Last unimplemented")
|
||||
}
|
||||
|
||||
func (g *getIter) Next() (*InternalKey, []byte) {
|
||||
func (g *getIter) Next() (*InternalKey, base.LazyValue) {
|
||||
if g.iter != nil {
|
||||
g.iterKey, g.iterValue = g.iter.Next()
|
||||
}
|
||||
@@ -82,26 +82,26 @@ func (g *getIter) Next() (*InternalKey, []byte) {
|
||||
// key. Every call to levelIter.Next() potentially switches to a new
|
||||
// table and thus reinitializes rangeDelIter.
|
||||
if g.rangeDelIter != nil {
|
||||
g.tombstone = keyspan.Get(g.cmp, g.rangeDelIter, g.key, g.snapshot)
|
||||
g.tombstone = keyspan.Get(g.cmp, g.rangeDelIter, g.key)
|
||||
if g.err = g.rangeDelIter.Close(); g.err != nil {
|
||||
return nil, nil
|
||||
return nil, base.LazyValue{}
|
||||
}
|
||||
g.rangeDelIter = nil
|
||||
}
|
||||
|
||||
if g.iterKey != nil {
|
||||
key := g.iterKey
|
||||
if g.tombstone.Covers(key.SeqNum()) {
|
||||
if g.tombstone != nil && g.tombstone.CoversAt(g.snapshot, key.SeqNum()) {
|
||||
// We have a range tombstone covering this key. Rather than return a
|
||||
// point or range deletion here, we return false and close our
|
||||
// internal iterator which will make Valid() return false,
|
||||
// effectively stopping iteration.
|
||||
g.err = g.iter.Close()
|
||||
g.iter = nil
|
||||
return nil, nil
|
||||
return nil, base.LazyValue{}
|
||||
}
|
||||
if g.equal(g.key, key.UserKey) {
|
||||
if !key.Visible(g.snapshot) {
|
||||
if !key.Visible(g.snapshot, base.InternalKeySeqNumMax) {
|
||||
g.iterKey, g.iterValue = g.iter.Next()
|
||||
continue
|
||||
}
|
||||
@@ -113,23 +113,33 @@ func (g *getIter) Next() (*InternalKey, []byte) {
|
||||
g.err = g.iter.Close()
|
||||
g.iter = nil
|
||||
if g.err != nil {
|
||||
return nil, nil
|
||||
return nil, base.LazyValue{}
|
||||
}
|
||||
}
|
||||
|
||||
// Create an iterator from the batch.
|
||||
if g.batch != nil {
|
||||
if g.batch.index == nil {
|
||||
g.err = ErrNotIndexed
|
||||
g.iterKey, g.iterValue = nil, base.LazyValue{}
|
||||
return nil, base.LazyValue{}
|
||||
}
|
||||
g.iter = g.batch.newInternalIter(nil)
|
||||
g.rangeDelIter = g.batch.newRangeDelIter(nil)
|
||||
g.rangeDelIter = g.batch.newRangeDelIter(
|
||||
nil,
|
||||
// Get always reads the entirety of the batch's history, so no
|
||||
// batch keys should be filtered.
|
||||
base.InternalKeySeqNumMax,
|
||||
)
|
||||
g.iterKey, g.iterValue = g.iter.SeekGE(g.key, base.SeekGEFlagsNone)
|
||||
g.batch = nil
|
||||
g.iterKey, g.iterValue = g.iter.SeekGE(g.key, false /* trySeekUsingNext */)
|
||||
continue
|
||||
}
|
||||
|
||||
// If we have a tombstone from a previous level it is guaranteed to delete
|
||||
// keys in lower levels.
|
||||
if !g.tombstone.Empty() {
|
||||
return nil, nil
|
||||
if g.tombstone != nil && g.tombstone.VisibleAt(g.snapshot) {
|
||||
return nil, base.LazyValue{}
|
||||
}
|
||||
|
||||
// Create iterators from memtables from newest to oldest.
|
||||
@@ -138,7 +148,7 @@ func (g *getIter) Next() (*InternalKey, []byte) {
|
||||
g.iter = m.newIter(nil)
|
||||
g.rangeDelIter = m.newRangeDelIter(nil)
|
||||
g.mem = g.mem[:n-1]
|
||||
g.iterKey, g.iterValue = g.iter.SeekGE(g.key, false /* trySeekUsingNext */)
|
||||
g.iterKey, g.iterValue = g.iter.SeekGE(g.key, base.SeekGEFlagsNone)
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -149,17 +159,17 @@ func (g *getIter) Next() (*InternalKey, []byte) {
|
||||
g.l0 = g.l0[:n-1]
|
||||
iterOpts := IterOptions{logger: g.logger}
|
||||
g.levelIter.init(iterOpts, g.cmp, nil /* split */, g.newIters,
|
||||
files, manifest.L0Sublevel(n), nil)
|
||||
files, manifest.L0Sublevel(n), internalIterOpts{})
|
||||
g.levelIter.initRangeDel(&g.rangeDelIter)
|
||||
g.iter = &g.levelIter
|
||||
g.iterKey, g.iterValue = g.iter.SeekGE(g.key, false /* trySeekUsingNext */)
|
||||
g.iterKey, g.iterValue = g.iter.SeekGE(g.key, base.SeekGEFlagsNone)
|
||||
continue
|
||||
}
|
||||
g.level++
|
||||
}
|
||||
|
||||
if g.level >= numLevels {
|
||||
return nil, nil
|
||||
return nil, base.LazyValue{}
|
||||
}
|
||||
if g.version.Levels[g.level].Empty() {
|
||||
g.level++
|
||||
@@ -168,26 +178,18 @@ func (g *getIter) Next() (*InternalKey, []byte) {
|
||||
|
||||
iterOpts := IterOptions{logger: g.logger}
|
||||
g.levelIter.init(iterOpts, g.cmp, nil /* split */, g.newIters,
|
||||
g.version.Levels[g.level].Iter(), manifest.Level(g.level), nil)
|
||||
g.version.Levels[g.level].Iter(), manifest.Level(g.level), internalIterOpts{})
|
||||
g.levelIter.initRangeDel(&g.rangeDelIter)
|
||||
g.level++
|
||||
g.iter = &g.levelIter
|
||||
g.iterKey, g.iterValue = g.iter.SeekGE(g.key, false /* trySeekUsingNext */)
|
||||
g.iterKey, g.iterValue = g.iter.SeekGE(g.key, base.SeekGEFlagsNone)
|
||||
}
|
||||
}
|
||||
|
||||
func (g *getIter) Prev() (*InternalKey, []byte) {
|
||||
func (g *getIter) Prev() (*InternalKey, base.LazyValue) {
|
||||
panic("pebble: Prev unimplemented")
|
||||
}
|
||||
|
||||
func (g *getIter) Key() *InternalKey {
|
||||
return g.iterKey
|
||||
}
|
||||
|
||||
func (g *getIter) Value() []byte {
|
||||
return g.iterValue
|
||||
}
|
||||
|
||||
func (g *getIter) Valid() bool {
|
||||
return g.iterKey != nil && g.err == nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user