-
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) #56212
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
expresssion: fix div result type infer bug if a integer type has minimum display length (#56158) #56212
Conversation
Signed-off-by: ti-chi-bot <[email protected]>
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
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## release-8.1 #56212 +/- ##
================================================
Coverage ? 71.1845%
================================================
Files ? 1466
Lines ? 423116
Branches ? 0
================================================
Hits ? 301193
Misses ? 101415
Partials ? 20508
Flags with carried forward coverage won't be shown. Click here to find out more.
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: windtalker, 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 |
[LGTM Timeline notifier]Timeline:
|
This is an automated cherry-pick of #56158
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.