[kv] Fix non-target columns not being nulled during partial update on first insert#3157
Merged
luoyuxia merged 1 commit intoapache:release-0.9from Apr 22, 2026
Merged
Conversation
… first insert (apache#2969) (cherry picked from commit 0af3478)
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.
Purpose
Linked issue: close #2843
This pull request backports the fix from #2969 to
release-0.9.It fixes a bug where
partialUpdateon a Primary Key table during a first insert incorrectly preserved values for non-target columns from the client row instead of nulling them out.Brief change log
mergeInsert(BinaryValue newValue)toRowMergerand implemented the partial-update insert path in the relevant row merger classes.KvTablet.processUpsert()to applycurrentMerger.mergeInsert(currentValue)beforeapplyInsert()so first-insert partial updates go through the same merge semantics.Tests
./mvnw -pl fluss-server -am -Dtest=KvTabletTest,FirstRowRowMergerTest,VersionedRowMergerTest -Dsurefire.failIfNoSpecifiedTests=false -Drat.skip=true testAPI and Format
No. This is an internal bug fix and does not change public APIs or storage formats.
Documentation
No. This change fixes existing behavior and does not require documentation updates.