Add Release & Error methods to Iterator

We need this to properly support LevelDB backend, which needs
to be released if we don't want to leak memory.
This commit is contained in:
Alexis Sellier 2017-09-28 17:26:24 +02:00
parent 9997e3a3b4
commit 296d223545
2 changed files with 14 additions and 1 deletions

View File

@ -10,10 +10,10 @@ type DB interface {
DeleteSync([]byte)
Close()
NewBatch() Batch
Iterator() Iterator
// For debugging
Print()
Iterator() Iterator
Stats() map[string]string
}
@ -28,6 +28,9 @@ type Iterator interface {
Key() []byte
Value() []byte
Release()
Error() error
}
//-----------------------------------------------------------------------------

View File

@ -97,6 +97,16 @@ func (it *memDBIterator) Value() []byte {
return it.db.Get(it.Key())
}
func (it *memDBIterator) Release() {
it.db = nil
it.keys = nil
return
}
func (it *memDBIterator) Error() error {
return nil
}
func (db *MemDB) Iterator() Iterator {
it := newMemDBIterator()
it.db = db