Repository navigation
feat: let a range scan leave out the values - #487
Merged
Merged
Conversation
Signed-off-by: mattisonchao <qiang.zhao@streamnative.io>
Signed-off-by: mattisonchao <qiang.zhao@streamnative.io>
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
This was referenced Oct 30, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of oxia-db/oxia#1759. Server side: oxia-db/oxia#1798.
Problem
list()is deprecated in favor ofrangeScan()(#485), but a range scan returns the values too, so moving a caller fromlist()torangeScan()transfers every value.Change
RangeScanOption.IncludeValue(boolean), which returns theOptionIncludeValueofGetOption.IncludeValue. Withfalse, the client setsinclude_values = falseon the request, and the results have an empty value and the version of each record. With an index, they still have their secondary keys.include_valuesis anoptional boolinclient.proto: unset means true, so the requests of older clients keep their values.listnow points torangeScanwithIncludeValue(false).Testing
AsyncOxiaClientImplTest.rangeScanWithoutValuesDropsTheValuesOfAnOlderServer: the request setsinclude_values = falseonly without the values, and the client drops the values a server sends anyway.OptionsUtilsTest.includesValue: the values are included unless an option leaves them out.OxiaClientIT.testRangeScanWithoutValues: against a server, the scan returns the keys and the versions with empty values../gradlew spotlessApply build, including the integration tests: pass.check-coverage.py: 100% of lines (3636) and branches (1534).AI Usage
Claude Code made the change, wrote the tests, ran the build, wrote this description and created the PR, at the contributor's request.