[MDEV-9318] ALTER to ENUM from INT,DOUBLE vs DECIMAL behave differently Created: 2015-12-23  Updated: 2018-06-13

Status: Open
Project: MariaDB Server
Component/s: OTHER
Affects Version/s: 5.5, 10.0, 10.1, 10.2
Fix Version/s: 10.2

Type: Bug Priority: Minor
Reporter: Alexander Barkov Assignee: Alexander Barkov
Resolution: Unresolved Votes: 0
Labels: None


 Description   

DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
  i INT,
  f DOUBLE,
  d DECIMAL(5,0)
) ENGINE=MyISAM;
INSERT INTO t1 VALUES (256,256,256);
SELECT * FROM t1;

returns

+------+------+------+
| i    | f    | d    |
+------+------+------+
|  256 |  256 |  256 |
+------+------+------+

i.e. three numbers with equal values.
Now if I ALTER all three fields to ENUM('256'), the results are different:

ALTER TABLE t1 MODIFY i ENUM('256'), MODIFY f ENUM('256'), MODIFY d ENUM('256');
SHOW WARNINGS;
SELECT * FROM t1;

returns:

+---------+------+----------------------------------------+
| Level   | Code | Message                                |
+---------+------+----------------------------------------+
| Warning | 1265 | Data truncated for column 'd' at row 1 |
+---------+------+----------------------------------------+
+------+------+------+
| i    | f    | d    |
+------+------+------+
| 256  | 256  |      |
+------+------+------+
1 row in set (0.00 sec)

It's not clear why INT and DOUBLE behave differently comparing to DECIMAL.


Generated at Thu Feb 08 07:33:46 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.