-
Notifications
You must be signed in to change notification settings - Fork 5.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
expression: fix unexpected panic when doing isNullRejected check (#22173) #22327
Merged
qw4990
merged 4 commits into
pingcap:release-4.0
from
ti-srebot:release-4.0-cdcb0ffa3412
Jan 14, 2021
Merged
expression: fix unexpected panic when doing isNullRejected check (#22173) #22327
qw4990
merged 4 commits into
pingcap:release-4.0
from
ti-srebot:release-4.0-cdcb0ffa3412
Jan 14, 2021
Conversation
This file contains 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
Signed-off-by: ti-srebot <[email protected]>
/run-all-tests |
ti-srebot
added
component/expression
sig/planner
SIG: Planner
type/4.0-cherry-pick
type/bugfix
This PR fixes a bug.
labels
Jan 11, 2021
@xuyifangreeneyes you're already a collaborator in bot's repo. |
/run-all-tests |
/run-all-tests |
/run-all-tests |
winoros
reviewed
Jan 14, 2021
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
qw4990
approved these changes
Jan 14, 2021
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
ti-srebot
added
status/LGT2
Indicates that a PR has LGTM 2.
and removed
status/LGT1
Indicates that a PR has LGTM 1.
labels
Jan 14, 2021
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
component/expression
sig/planner
SIG: Planner
status/LGT2
Indicates that a PR has LGTM 2.
type/bugfix
This PR fixes a bug.
type/4.0-cherry-pick
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.
cherry-pick #22173 to release-4.0
You can switch your code base to this Pull Request by using git-extras:
# In tidb repo: git pr 22327
After apply modifications, you can push your change to this PR via:
What problem does this PR solve?
Issue Number: close #22098
Problem Summary:
TiDB server panics when executing a prepared SQL with
prepared-plan-cache
enabled.What is changed and how it works?
What's Changed:
When creating Constant in
foldConstant
for NullRejectCheck case, we set itsDeferredExpr
tonil
.How it Works:
DeferredExpr
of the constant created infoldConstant
. When creating the constant infoldConstant
, we evaluate a dummyScalarFunc instead of the original ScalarFunction to get the constant value while we setDeferredExpr
to the original ScalarFunction. When the constant is used as argument for another function, it is reevaluated by evaluating the original ScalarFunction, which cannot be done in the context and leads to panic.EvaluateExprWithNull
whenInNullRejectCheck = true
. We just check whether the result expression is null or false and then let it die. Basically, the constant is used once briefly and will not be retained for a long time. Hence settingDeferredExpr
of the constant to nil is ok.Related changes
pingcap/docs
/pingcap/docs-cn
:Check List
Tests
Release note
prepared-plan-cache
enabled.