-
Notifications
You must be signed in to change notification settings - Fork 5.8k
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
planner: remove some risky cache operations in the plan builder #23354
Conversation
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
@winoros: Please use If you have approved this PR, please ignore this reply. This reply is being used as a temporary reply during the migration of the new bot and will be removed on April 1. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the ti-community-infra/tichi repository. |
[REVIEW NOTIFICATION] This pull request has been approved by:
To complete the pull request process, please ask the reviewers in the list to review by filling The full list of commands accepted by this bot can be found here. Reviewer can indicate their review by writing |
/run-all-tests |
/merge |
This pull request has been accepted and is ready to merge. Commit hash: af066a5
|
Signed-off-by: ti-srebot <ti-srebot@pingcap.com>
cherry pick to release-5.0 in PR #23536 |
Signed-off-by: ti-srebot <ti-srebot@pingcap.com>
cherry pick to release-4.0 in PR #23537 |
What problem does this PR solve?
Issue Number: close #22850
Problem Summary: planner: remove some risky cache operations in the plan builder
What is changed and how it works?
#21431 allows the plan builder to cache some logical plans to avoid unnecessary evaluation(in
PlanBuilder.buildTableRefs
), but this operation brings some risks.Because the cached logical plans may be modified in some other places, and once they are modified, some implicit assumptions may be broken.
In this case(#22850):
len(p.Schema().Cols) == len(p.OutputNames())
(ingetExpressionRewriter
).buildProjection
): the first happens when pre-processing user variables(preprocessUserVarTypes
) and the second happens when rewriting selection fields(rewriteWithPreprocess
);Check List
Tests
Release note