-
Notifications
You must be signed in to change notification settings - Fork 6k
expresssion: fix div result type infer bug if a integer type has minimum display length #56158
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
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #56158 +/- ##
=================================================
- Coverage 72.9321% 56.7479% -16.1842%
=================================================
Files 1611 1736 +125
Lines 447557 631265 +183708
=================================================
+ Hits 326413 358230 +31817
- Misses 101153 249372 +148219
- Partials 19991 23663 +3672
Flags with carried forward coverage won't be shown. Click here to find out more.
|
Signed-off-by: xufei <[email protected]>
Signed-off-by: xufei <[email protected]>
ef38965
to
57b2491
Compare
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: wshwsh12, XuHuaiyu The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
Signed-off-by: ti-chi-bot <[email protected]>
In response to a cherrypick label: new pull request created to branch |
In response to a cherrypick label: new pull request created to branch |
Signed-off-by: ti-chi-bot <[email protected]>
…mum display length (pingcap#56158) close pingcap#55837
What problem does this PR solve?
Issue Number: close #55837
Problem Summary:
In MySQL, it support minimum display length when creating a integer type, for example, you can create table with type
col1 bigint(4)
, it means the display length of col1 should be at least 4.However, TiDB just treated
4
as the flen of the current type, which will cause wrong result in some cases, since4
here does not mean the max length ofcol1
is 4: for example, in #55837 a column is declared asts bigint(4)
, so tidb think the result type ofts/1000
isDecimal(9,4)
, which is obviousely wrong, and caused the wrong result.Since the root cause of #55837 is when user declare an interger type with minimun display length, TiDB actually treated the minimum display length as the
max length
of the given type, a complete fix should be re-design of TiDB's support ofminimum display length
of integer type, which will involve a lots of work, and it's hardly to be finished within a short time. So this pr use a simple workaround to fix #55837What changed and how does it work?
Check List
Tests
Side effects
Documentation
Release note
Please refer to Release Notes Language Style Guide to write a quality release note.