mirror of
https://github.com/fluencelabs/tendermint
synced 2025-06-12 04:41:22 +00:00
db: goleveldb iterator
This commit is contained in:
@ -80,11 +80,6 @@ func TestDBIteratorTwoKeys(t *testing.T) {
|
|||||||
itr := db.Iterator(BeginningKey(), EndingKey())
|
itr := db.Iterator(BeginningKey(), EndingKey())
|
||||||
checkValid(t, itr, true)
|
checkValid(t, itr, true)
|
||||||
|
|
||||||
for i := 0; i < 10; i++ {
|
|
||||||
checkNext(t, itr, true)
|
|
||||||
checkValid(t, itr, true)
|
|
||||||
}
|
|
||||||
|
|
||||||
checkNext(t, itr, true)
|
checkNext(t, itr, true)
|
||||||
checkValid(t, itr, true)
|
checkValid(t, itr, true)
|
||||||
|
|
||||||
|
@ -20,6 +20,8 @@ func init() {
|
|||||||
registerDBCreator(GoLevelDBBackendStr, dbCreator, false)
|
registerDBCreator(GoLevelDBBackendStr, dbCreator, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var _ DB = (*GoLevelDB)(nil)
|
||||||
|
|
||||||
type GoLevelDB struct {
|
type GoLevelDB struct {
|
||||||
db *leveldb.DB
|
db *leveldb.DB
|
||||||
}
|
}
|
||||||
@ -168,15 +170,13 @@ func (mBatch *goLevelDBBatch) Write() {
|
|||||||
// Iterator
|
// Iterator
|
||||||
|
|
||||||
func (db *GoLevelDB) Iterator(start, end []byte) Iterator {
|
func (db *GoLevelDB) Iterator(start, end []byte) Iterator {
|
||||||
/*
|
itr := &goLevelDBIterator{
|
||||||
XXX
|
source: db.db.NewIterator(nil, nil),
|
||||||
itr := &goLevelDBIterator{
|
start: start,
|
||||||
source: db.db.NewIterator(nil, nil),
|
end: end,
|
||||||
}
|
}
|
||||||
itr.Seek(nil)
|
itr.source.Seek(start)
|
||||||
return itr
|
return itr
|
||||||
*/
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (db *GoLevelDB) ReverseIterator(start, end []byte) Iterator {
|
func (db *GoLevelDB) ReverseIterator(start, end []byte) Iterator {
|
||||||
@ -184,9 +184,16 @@ func (db *GoLevelDB) ReverseIterator(start, end []byte) Iterator {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var _ Iterator = (*goLevelDBIterator)(nil)
|
||||||
|
|
||||||
type goLevelDBIterator struct {
|
type goLevelDBIterator struct {
|
||||||
source iterator.Iterator
|
source iterator.Iterator
|
||||||
invalid bool
|
invalid bool
|
||||||
|
start, end []byte
|
||||||
|
}
|
||||||
|
|
||||||
|
func (it *goLevelDBIterator) Domain() ([]byte, []byte) {
|
||||||
|
return it.start, it.end
|
||||||
}
|
}
|
||||||
|
|
||||||
// Key returns a copy of the current key.
|
// Key returns a copy of the current key.
|
||||||
@ -217,10 +224,6 @@ func (it *goLevelDBIterator) GetError() error {
|
|||||||
return it.source.Error()
|
return it.source.Error()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (it *goLevelDBIterator) Seek(key []byte) {
|
|
||||||
it.source.Seek(key)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (it *goLevelDBIterator) Valid() bool {
|
func (it *goLevelDBIterator) Valid() bool {
|
||||||
if it.invalid {
|
if it.invalid {
|
||||||
return false
|
return false
|
||||||
@ -246,3 +249,7 @@ func (it *goLevelDBIterator) Prev() {
|
|||||||
func (it *goLevelDBIterator) Close() {
|
func (it *goLevelDBIterator) Close() {
|
||||||
it.source.Release()
|
it.source.Release()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (it *goLevelDBIterator) Release() {
|
||||||
|
it.source.Release()
|
||||||
|
}
|
||||||
|
@ -50,7 +50,7 @@ func TestPrefixIteratorMatch3(t *testing.T) {
|
|||||||
t.Run(fmt.Sprintf("Prefix w/ backend %s", backend), func(t *testing.T) {
|
t.Run(fmt.Sprintf("Prefix w/ backend %s", backend), func(t *testing.T) {
|
||||||
db := newTempDB(t, backend)
|
db := newTempDB(t, backend)
|
||||||
db.SetSync(bz("3"), bz("value_3"))
|
db.SetSync(bz("3"), bz("value_3"))
|
||||||
itr := IteratePrefix(db, []byte("2"))
|
itr := IteratePrefix(db, []byte("4"))
|
||||||
|
|
||||||
// Once invalid...
|
// Once invalid...
|
||||||
checkInvalid(t, itr)
|
checkInvalid(t, itr)
|
||||||
|
Reference in New Issue
Block a user