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

expression: avoid constPropgate for the hybrid types (#20258) #20296

Merged
merged 4 commits into from
Nov 11, 2020

Conversation

ti-srebot
Copy link
Contributor

@ti-srebot ti-srebot commented Sep 29, 2020

cherry-pick #20258 to release-3.0


What problem does this PR solve?

Issue Number: close #20180

Problem Summary:

create table t(a enum('a', 'b'), b tinyint);
create table t1(c varchar(20));
insert into t values('b', 0);
insert into t1 values('b');
select * from t, t1 where t.a = t1.c and t.b= t1.c;

In condition t.a=t1.c, the EvalType is ETString.
In condition t.b=t1.c, the EvalType type is ETInt.
So that it shouldn't use propagate column optimization, only if the propConstSolver can distinguish them.
In the case above, it will construct a new condition t.a=t.b and push down to table t, and make the join result wrong.

What is changed and how it works?

Proposal: xxx

What's Changed: avoid propagate column EQ for Hybrid type (enum,set,bit).

How it Works:

Related changes

  • Need to cherry-pick to the release branch 3.0,4.0

Check List

Tests

  • Unit test
  • Integration test

Side effects

  • Performance regression
    • Consumes more CPU
    • Consumes more MEM

Release note

  • Fix potentially incorrect results when one of the equal condition is Enum of Set type.

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

/run-all-tests

Copy link
Contributor

@eurekaka eurekaka left a comment

Choose a reason for hiding this comment

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

Please resolve conflicts.

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
Copy link
Contributor Author

@lzmhhh123, Thanks for your review, however we are sorry that your vote won't be count.

Copy link
Contributor

@eurekaka eurekaka 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
Copy link
Contributor Author

@eurekaka, Thanks for your review. The bot only counts LGTMs from Reviewers and higher roles, but you're still welcome to leave your comments. See the corresponding SIG page for more information. Related SIG: execution(slack).

Copy link
Contributor

@wshwsh12 wshwsh12 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 Oct 22, 2020
@bb7133
Copy link
Member

bb7133 commented Nov 11, 2020

/merge

@ti-srebot
Copy link
Contributor Author

Sorry @bb7133, this branch cannot be merged without an approval of release maintainers

@bb7133
Copy link
Member

bb7133 commented Nov 11, 2020

/run-all-tests

@XuHuaiyu
Copy link
Contributor

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 Nov 11, 2020
@XuHuaiyu
Copy link
Contributor

/merge

@ti-srebot ti-srebot added the status/can-merge Indicates a PR has been approved by a committer. label Nov 11, 2020
@ti-srebot
Copy link
Contributor Author

/run-all-tests

@ti-srebot
Copy link
Contributor Author

@ti-srebot merge failed.

@bb7133
Copy link
Member

bb7133 commented Nov 11, 2020

/run-unit-test

@XuHuaiyu XuHuaiyu changed the title expression: avoid constant propagate for the hybrid types (#20258) expression: avoid constPropgate for the hybrid types (#20258) Nov 11, 2020
@XuHuaiyu XuHuaiyu merged commit 3d6d484 into pingcap:release-3.0 Nov 11, 2020
@XuHuaiyu XuHuaiyu deleted the release-3.0-1d34c333f4e8 branch November 11, 2020 08:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component/expression status/can-merge Indicates a PR has been approved by a committer. status/LGT2 Indicates that a PR has LGTM 2. type/bugfix This PR fixes a bug. type/3.0-cherry-pick
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants