SubtrieIterators also needs to return bases
This commit is contained in:
parent
ff1e1a4ea7
commit
241c059a67
@ -140,11 +140,11 @@ func eachPrefixRange(prefix []byte, nbins uint, callback func([]byte, []byte)) {
|
||||
}
|
||||
|
||||
// SubtrieIterators cuts a trie by path prefix, returning `nbins` iterators covering its subtries
|
||||
func SubtrieIterators(makeIterator IteratorConstructor, nbins uint) []trie.NodeIterator {
|
||||
var iters []trie.NodeIterator
|
||||
func SubtrieIterators(makeIterator IteratorConstructor, nbins uint) (iters, bases []trie.NodeIterator) {
|
||||
eachPrefixRange(nil, nbins, func(from []byte, to []byte) {
|
||||
it := makeIterator(HexToKeyBytes(from))
|
||||
bases = append(bases, it)
|
||||
iters = append(iters, NewPrefixBoundIterator(it, to))
|
||||
})
|
||||
return iters
|
||||
return iters, bases
|
||||
}
|
||||
|
||||
@ -57,7 +57,7 @@ func TestIterator(t *testing.T) {
|
||||
allPaths := internal.FixtureNodePaths
|
||||
cases := []uint{1, 2, 4, 8, 16, 32}
|
||||
runCase := func(t *testing.T, nbins uint) {
|
||||
iters := iter.SubtrieIterators(tree.NodeIterator, nbins)
|
||||
iters, _ := iter.SubtrieIterators(tree.NodeIterator, nbins)
|
||||
ix := 0
|
||||
for b := uint(0); b < nbins; b++ {
|
||||
for it := iters[b]; it.Next(true); ix++ {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user