Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
5.5(EOL), 10.0(EOL), 10.1(EOL)
-
None
Description
These two scripts:
DROP TABLE IF EXISTS t1;
|
CREATE TABLE t1 (a DATETIME);
|
INSERT INTO t1 VALUES (1000);
|
SELECT * FROM t1;
|
DROP TABLE IF EXISTS t1,t2;
|
CREATE TABLE t1 (a DATETIME);
|
CREATE TABLE t2 (a INT);
|
INSERT INTO t2 VALUES (1000);
|
INSERT INTO t1 SELECT * FROM t2;
|
SELECT * FROM t1;
|
return
+---------------------+
|
| a |
|
+---------------------+
|
| 2000-10-00 00:00:00 |
|
+---------------------+
|
This script:
DROP TABLE IF EXISTS t1;
|
CREATE TABLE t1 (a INT);
|
INSERT INTO t1 VALUES (1000);
|
ALTER TABLE t1 MODIFY a DATETIME;
|
SELECT * FROM t1;
|
returns a different result:
+---------------------+
|
| a |
|
+---------------------+
|
| 0000-00-00 00:00:00 |
|
+---------------------+
|
All three cases are expected to return the same result.
Attachments
Issue Links
- blocks
-
MDEV-4912 Data type plugin API version 1
-
- Closed
-
Activity
Summary | ALTER from INT to DOUBLE returns a wrong result | ALTER from INT to DATETIME returns a wrong result |
Summary | ALTER from INT to DATETIME returns a wrong result | ALTER from DECIMAL and INT to DATETIME returns a wrong result |
Affects Version/s | 5.5 [ 15800 ] | |
Affects Version/s | 10.0 [ 16000 ] | |
Affects Version/s | 10.1 [ 16100 ] |
Component/s | Temporal Types [ 11000 ] |
Fix Version/s | 10.2.0 [ 20700 ] | |
Fix Version/s | 10.0 [ 16000 ] | |
Fix Version/s | 5.5 [ 15800 ] | |
Fix Version/s | 10.1 [ 16100 ] | |
Fix Version/s | 10.2 [ 14601 ] | |
Resolution | Fixed [ 1 ] | |
Status | Open [ 1 ] | Closed [ 6 ] |
Workflow | MariaDB v3 [ 73335 ] | MariaDB v4 [ 149946 ] |
The same problem is repeatable with the DECIMAL data type:
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a DATETIME);
INSERT INTO t1 VALUES (1000.0);
SELECT * FROM t1;
and
DROP TABLE IF EXISTS t1,t2;
CREATE TABLE t1 (a DATETIME);
CREATE TABLE t2 (a DECIMAL(4,0));
INSERT INTO t2 VALUES (1000);
INSERT INTO t1 SELECT * FROM t2;
SELECT * FROM t1;
return
+---------------------+
| a |
+---------------------+
| 2000-10-00 00:00:00 |
+---------------------+
While this script:
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a DECIMAL(4,0));
INSERT INTO t1 VALUES (1000);
ALTER TABLE t1 MODIFY a DATETIME;
SELECT * FROM t1;
returns
+---------------------+
| a |
+---------------------+
| 0000-00-00 00:00:00 |
+---------------------+