Skip to content

Fix RangedGetMachine skipping keys past min prefix#2110

Open
kkuehlz wants to merge 1 commit intomainfrom
kkuehler/traverse
Open

Fix RangedGetMachine skipping keys past min prefix#2110
kkuehlz wants to merge 1 commit intomainfrom
kkuehler/traverse

Conversation

@kkuehlz
Copy link
Contributor

@kkuehlz kkuehlz commented Feb 28, 2026

does_key_intersect_with_range() used starts_with() to check short paths against min, which missed paths lexicographically past the min prefix (e.g. path 0x1 with min 0x01234). Compare the path against the truncated min prefix instead.

does_key_intersect_with_range used starts_with to check short paths
against min, which missed paths lexicographically past the min prefix
(e.g. path 0x1 with min 0x01234). Compare the path against the
truncated min prefix instead.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
Copilot AI review requested due to automatic review settings February 28, 2026 00:36
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes a traversal pruning bug in RangedGetMachine where paths shorter than min could be incorrectly skipped when they were lexicographically past the truncated min prefix, causing valid keys in [min, max) to be missed during ranged traversal.

Changes:

  • Update does_key_intersect_with_range() to compare path against the truncated min prefix (instead of using starts_with()).
  • Add a regression test covering the “path exceeds min prefix” case to ensure ranged traversal returns all expected keys.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
category/mpt/traverse_util.hpp Fixes range-intersection logic for path.nibble_size() < min_.nibble_size() to avoid incorrectly pruning subtrees.
category/mpt/test/db_test.cpp Adds a regression test that fails under the old pruning logic and passes with the new truncated-prefix comparison.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants