this repo has no description
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

Fix seek bugs in iterator

garrison 12dac679 7beb1ef9

+9 -5
+4 -1
lib/btree/fuzz/model_fuzz.ex
··· 100 100 101 101 defp scan(btree, start_key, count, reverse?) do 102 102 it = Iterator.new(btree, start_key, reverse?) 103 - do_scan(it, [], count) 103 + case it.current_pair do 104 + :infinity -> [] 105 + pair -> do_scan(it, [pair], count - 1) 106 + end 104 107 end 105 108 106 109 defp do_scan(_it, acc, 0), do: Enum.reverse(acc)
+5 -4
lib/btree/iterator.ex
··· 53 53 it = %{it | 54 54 page_stack: [{page_data, i} | it.page_stack], 55 55 current_page: child_data, 56 - current_i: 0, 56 + current_i: -1, 57 57 } 58 58 seek_forward(it, search_key) 59 59 ··· 85 85 86 86 defp seek_leaf([], _search_key, _i), do: :not_found 87 87 defp seek_leaf([{k, _v} = p | pairs_rest], search_key, i) do 88 - case search_key >= k do 88 + case k >= search_key do 89 89 true -> {i, p} 90 - false -> seek_leaf(pairs_rest, search_key, i) 90 + false -> seek_leaf(pairs_rest, search_key, i + 1) 91 91 end 92 92 end 93 93 ··· 109 109 child_page = BTree.read_page(it.btree.page_store, child_index, child_checksum) 110 110 it = %{it | 111 111 page_stack: [{current_i, current_page} | it.page_stack], 112 - current_i: 0, 113 112 current_page: child_page, 113 + current_i: -1, 114 + current_pair: nil, 114 115 } 115 116 next_forward(it) 116 117