executor: change the evaluation order of columns in Update and Insert statements (#57123)#58494
Merged
ti-chi-bot[bot] merged 3 commits intopingcap:release-7.5from Feb 27, 2025
Conversation
Signed-off-by: ti-chi-bot <ti-community-prow-bot@tidb.io>
13 tasks
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## release-7.5 #58494 +/- ##
================================================
Coverage ? 72.7931%
================================================
Files ? 1417
Lines ? 420519
Branches ? 0
================================================
Hits ? 306109
Misses ? 94463
Partials ? 19947
Flags with carried forward coverage won't be shown. Click here to find out more.
|
13 tasks
fzzf678
approved these changes
Feb 27, 2025
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: Benjamin2037, fzzf678 The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
[LGTM Timeline notifier]Timeline:
|
13 tasks
13 tasks
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.
This is an automated cherry-pick of #57123
What problem does this PR solve?
Issue Number: ref #56829
Problem Summary:
In the previous logic, when we use
UPDATEorINSERT ON DUPLICATE, the new row will be generated in the following order:UPDATEandINSERT, they are evaluated incomposeGeneratedColumnsanddoDupRowUpdaterespectively.However, auto-generated columns may rely on the on-update-now columns to generate value. For example in #56829 (comment)
expired_atis generated based on the latest timestamp value fromupdated_at. So we will get wrongexpired_atvalue. Even worse,expired_atis the part of the indexidx_c_on_expired_at. So querying dataexpired_atusing index scan and full table scan will get different result, since in full table scan,expired_atis calculated in real-time.This also explains #56829 (comment) why changing
VIRTUALtoSTOREDwill not yield such error, although this value itself is incorrect.What changed and how does it work?
To address this problem, this PR refactor the logic of
INSERT ON DUPLICATEandUPDATE. More specifically:updateRecord.updateRecord.errorHandlerfunction forUPDATEandINSERTto handle error/warning inupdateRecord.Check List
Tests
Side effects
Documentation
Release note
Please refer to Release Notes Language Style Guide to write a quality release note.