fix(plan): support modern multi-target updates - #26462
Draft
ck89119 wants to merge 15 commits into
Draft
Conversation
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.
What type of PR is this?
Which issue(s) this PR fixes:
fixes #26340
What this PR does / why we need it:
Multi-target
UPDATEstatements were still routed to the legacy planner becausethe modern path could not independently deduplicate and filter rows for each
updated table. A shared source row may represent a valid target row for one
table and a duplicate or outer-join NULL row for another.
This change:
UPDATEstatements through the modernMULTI_UPDATEpath;
row_number()selector for each physical target Rowid;secondary-index write contexts in both table and S3 writers;
rows do not trigger false duplicate-key errors;
old secondary-index row for one target;
and partition-clone paths; and
coverage.
Validation:
mo-cgo-test ./pkg/sql/plan -count=1mo-cgo-test ./pkg/sql/colexec/multi_update -count=1mo-cgo-test ./pkg/sql/compile -count=1mo-cgo-test ./pkg/sql/plan -race -count=1mo-testerBVT: 17/17 statements passedmake buildmake static-checkgit diff --check