Skip to content
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: fix the fail when we compare multi fields in the subquery (#21699) #21808

Merged
merged 3 commits into from
Jan 26, 2021

Conversation

ti-srebot
Copy link
Contributor

cherry-pick #21699 to release-4.0


What problem does this PR solve?

Issue Number: close #13551 close #21674

Problem Summary:
When we use (SELECT c1, c2 FROM t2 LIMIT 1) = ANY (SELECT c1, c2 FROM t1) in the where statement, the expressionRewrite.ctxStack will store the result value of SELECT c1, c2 FROM t2 LIMIT 1. So in issue#21674, when the value of c1 is zero, the plan will be convert to tableDual.

What is changed and how it works?

So, we should set expressionRewrite.asScalar = true like handleInSubquery function. It will use the parent expression's last column from the schema to represents whether the condition is matched(https://github.com/pingcap/tidb/blob/master/planner/core/expression_rewriter.go#L558-L561).

Related changes

  • PR to update pingcap/docs/pingcap/docs-cn:
  • Need to cherry-pick to the release branch

Check List

Tests

  • Unit test
  • Integration test

Release note

  • fix the fail when we compare multi fields in the subquery

Signed-off-by: ti-srebot <ti-srebot@pingcap.com>
@ti-srebot
Copy link
Contributor Author

/run-all-tests

@ti-srebot
Copy link
Contributor Author

@Reminiscent you're already a collaborator in bot's repo.

@Reminiscent
Copy link
Contributor

/run-all-tests

@jebter jebter modified the milestones: 4.0.0, v4.0.10 Jan 7, 2021
@jebter jebter modified the milestones: v4.0.10, v4.0.11 Jan 18, 2021
Copy link
Contributor

@qw4990 qw4990 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@ti-srebot ti-srebot added the status/LGT1 Indicates that a PR has LGTM 1. label Jan 26, 2021
@qw4990
Copy link
Contributor

qw4990 commented Jan 26, 2021

PTAL @XuHuaiyu @lzmhhh123

Copy link
Contributor

@lzmhhh123 lzmhhh123 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@ti-srebot 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 26, 2021
@qw4990 qw4990 merged commit 2cab88a into pingcap:release-4.0 Jan 26, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
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
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants