Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
5.5(EOL), 10.0(EOL), 10.1(EOL), 10.2(EOL)
-
None
Description
DROP TABLE IF EXISTS t1;
|
CREATE TABLE t1 (a DECIMAL(30,0));
|
INSERT INTO t1 VALUES (CAST(0xFFFFFFFFFFFFFFFF AS UNSIGNED));
|
SELECT * FROM t1;
|
returns
+----------------------+
|
| a |
|
+----------------------+
|
| 18446744073709551615 |
|
+----------------------+
|
So far so good.
Now if I do:
ALTER TABLE t1 MODIFY a BIGINT UNSIGNED;
|
SELECT * FROM t1;
|
it erroneously returns:
+---------------------+
|
| a |
|
+---------------------+
|
| 9223372036854775807 |
|
+---------------------+
|
The expected result is 18446744073709551615.
Attachments
Issue Links
- blocks
-
MDEV-4912 Data type plugin API version 1
-
- Closed
-
Activity
Summary | ALTER from DECIMAL to BIGINT UNSIGNED returns a wrong result | ALTER from DECIMAL to BIGINT UNSIGNED returns a wrong result |
issue.field.resolutiondate | 2018-06-15 06:13:47.0 | 2018-06-15 06:13:47.595 |
Fix Version/s | 10.2.16 [ 23110 ] | |
Fix Version/s | 10.3.8 [ 23113 ] | |
Fix Version/s | 10.4.0 [ 23115 ] | |
Fix Version/s | 10.2 [ 14601 ] | |
Resolution | Fixed [ 1 ] | |
Status | Open [ 1 ] | Closed [ 6 ] |
Workflow | MariaDB v3 [ 73332 ] | MariaDB v4 [ 149944 ] |
The same problem is repeatable with BIT(64)
SHOW WARNINGS;
+---------+------+-----------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------------------------------------------------+
| Warning | 1916 | Got overflow when converting '18446744073709551615' to INT. Value truncated |
+---------+------+-----------------------------------------------------------------------------+
+---------------------+
| a+0 |
+---------------------+
| 9223372036854775807 |
+---------------------+