From 28ec57faa80ae6b3cdfd586a4b7e927b29c84853 Mon Sep 17 00:00:00 2001 From: Roman Akhtariev Date: Tue, 8 Feb 2022 08:54:49 -0500 Subject: [PATCH] address comments from unsaved fast iterator PR --- unsaved_fast_iterator.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/unsaved_fast_iterator.go b/unsaved_fast_iterator.go index 667b568cd..ce1882df2 100644 --- a/unsaved_fast_iterator.go +++ b/unsaved_fast_iterator.go @@ -123,7 +123,7 @@ func (iter *UnsavedFastIterator) Valid() bool { } } - return iter.fastIterator.Valid() || iter.nextUnsavedNodeIdx < len(iter.unsavedFastNodesToSort) || iter.nextKey != nil || iter.nextVal != nil + return iter.fastIterator.Valid() || iter.nextUnsavedNodeIdx < len(iter.unsavedFastNodesToSort) || (iter.nextKey != nil && iter.nextVal != nil) } // Key implements dbm.Iterator @@ -137,6 +137,8 @@ func (iter *UnsavedFastIterator) Value() []byte { } // Next implements dbm.Iterator +// Its effectively running the constant space overhead algorithm for streaming through sorted lists: +// the sorted lists being underlying fast nodes & unsavedFastNodeChanges func (iter *UnsavedFastIterator) Next() { if iter.ndb == nil { iter.err = errFastIteratorNilNdbGiven @@ -159,9 +161,9 @@ func (iter *UnsavedFastIterator) Next() { var isUnsavedNext bool if iter.ascending { - isUnsavedNext = bytes.Compare([]byte(diskKeyStr), []byte(nextUnsavedKey)) >= 0 + isUnsavedNext = diskKeyStr >= nextUnsavedKey } else { - isUnsavedNext = bytes.Compare([]byte(diskKeyStr), []byte(nextUnsavedKey)) <= 0 + isUnsavedNext = diskKeyStr <= nextUnsavedKey } if isUnsavedNext {