diff --git a/store/iavlstore.go b/store/iavlstore.go index 5f1917e2c2..a1a48722cb 100644 --- a/store/iavlstore.go +++ b/store/iavlstore.go @@ -126,8 +126,6 @@ func (st *iavlStore) Subspace(prefix []byte) Iterator { i := 1 for !finished { - fmt.Printf("%v %v \n", len(end), i) - fmt.Printf("%v \n", end) if end[len(end)-i] != byte(255) { end[len(end)-i]++ finished = true @@ -135,11 +133,12 @@ func (st *iavlStore) Subspace(prefix []byte) Iterator { end[len(end)-i]++ i++ if i > len(end) { - end = []byte{} + end = nil finished = true } } } + fmt.Printf("%v \n", end) return st.Iterator(prefix, end) } @@ -243,6 +242,7 @@ func newIAVLIterator(tree *iavl.Tree, start, end []byte, ascending bool) *iavlIt quitCh: make(chan struct{}), initCh: make(chan struct{}), } + fmt.Printf("%v %v \n", iter.start, iter.end) go iter.iterateRoutine() go iter.initRoutine() return iter diff --git a/store/iavlstore_test.go b/store/iavlstore_test.go index 85e02ba258..6e276c3d22 100644 --- a/store/iavlstore_test.go +++ b/store/iavlstore_test.go @@ -81,7 +81,7 @@ func TestIAVLIterator(t *testing.T) { assert.EqualValues(t, value, treeData[expectedKey]) i += 1 } - assert.Equal(t, i, len(expected)) + assert.Equal(t, len(expected), i) iter = iavlStore.Iterator([]byte("golang"), []byte("rocks")) expected = []string{"hello"} @@ -92,7 +92,18 @@ func TestIAVLIterator(t *testing.T) { assert.EqualValues(t, value, treeData[expectedKey]) i += 1 } - assert.Equal(t, i, len(expected)) + assert.Equal(t, len(expected), i) + + iter = iavlStore.Iterator([]byte("golang"), nil) + expected = []string{"hello"} + for i = 0; iter.Valid(); iter.Next() { + expectedKey := expected[i] + key, value := iter.Key(), iter.Value() + assert.EqualValues(t, key, expectedKey) + assert.EqualValues(t, value, treeData[expectedKey]) + i += 1 + } + assert.Equal(t, len(expected), i) } func TestIAVLSubspace(t *testing.T) { @@ -117,7 +128,7 @@ func TestIAVLSubspace(t *testing.T) { assert.EqualValues(t, value, expectedKey) i += 1 } - assert.Equal(t, i, len(expected)) + assert.Equal(t, len(expected), i) iter = iavlStore.Subspace([]byte{byte(55), byte(255), byte(255)}) expected2 := [][]byte{ @@ -132,7 +143,7 @@ func TestIAVLSubspace(t *testing.T) { assert.EqualValues(t, value, []byte("test4")) i += 1 } - assert.Equal(t, i, len(expected)) + assert.Equal(t, len(expected), i) iter = iavlStore.Subspace([]byte{byte(255), byte(255)}) expected2 = [][]byte{ @@ -147,7 +158,7 @@ func TestIAVLSubspace(t *testing.T) { assert.EqualValues(t, value, []byte("test4")) i += 1 } - assert.Equal(t, i, len(expected)) + assert.Equal(t, len(expected), i) } func TestIAVLStoreQuery(t *testing.T) {