mvcc: fix reverse tree iterators gap tracking
Apparently, the current implementation of `tree_iterator_start_raw` is
buggy for reverse iterators: instead of tracking gaps for successors of
keys, it tracks gaps for tuples shifted by one to the left of the
successor: reorder the code of `tree_iterator_start_raw` to get
the successor tuple prior to shifting done for reverse iterators and
simplify the implementation to make it more straightforward and thus
comprehensible.
Closes #7073
Closes #7113
NO_DOC=bugfix
Co-authored-by:
Alexander Lyapunov <alyapunov@tarantool.org>
Showing
- changelogs/unreleased/gh-7113-rev-tree-iters-gap-tracking.md 5 additions, 0 deletionschangelogs/unreleased/gh-7113-rev-tree-iters-gap-tracking.md
- src/box/memtx_tree.cc 30 additions, 41 deletionssrc/box/memtx_tree.cc
- test/box-luatest/gh_7113_rev_tree_iters_gap_tracking_test.lua 136 additions, 0 deletions.../box-luatest/gh_7113_rev_tree_iters_gap_tracking_test.lua
Loading