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 constant propagate for the hybrid types (#20258) #20297

Merged
merged 3 commits into from
Oct 3, 2020

Conversation

ti-srebot
Copy link
Contributor

cherry-pick #20258 to release-4.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

  • Avoid propagate column optimization for Hybrid 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.

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).

@Hexilee
Copy link
Contributor

Hexilee commented Sep 29, 2020

This is a bug of the bot, and it should be fixed now, can you try again? @eurekaka

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 ti-srebot added the status/LGT1 Indicates that a PR has LGTM 1. label Sep 29, 2020
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
Member

@zz-jason zz-jason 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 Oct 3, 2020
@zz-jason
Copy link
Member

zz-jason commented Oct 3, 2020

/merge

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

Your auto merge job has been accepted, waiting for:

  • 20077

@ti-srebot
Copy link
Contributor Author

/run-all-tests

@ti-srebot ti-srebot merged commit cb4c1cd into pingcap:release-4.0 Oct 3, 2020
@eurekaka eurekaka deleted the release-4.0-1d34c333f4e8 branch October 10, 2020 08:41
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/4.0-cherry-pick
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants