Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-9337

ALTER from DECIMAL and INT to DATETIME returns a wrong result

Details

    • Bug
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Fixed
    • 5.5(EOL), 10.0(EOL), 10.1(EOL)
    • 10.2.0
    • Temporal Types
    • 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

          Activity

            bar Alexander Barkov created issue -
            bar Alexander Barkov made changes -
            Field Original Value New Value
            bar Alexander Barkov made changes -
            Summary ALTER from INT to DOUBLE returns a wrong result ALTER from INT to DATETIME returns a wrong result

            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 |
            +---------------------+

            bar Alexander Barkov added a comment - 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 | +---------------------+
            bar Alexander Barkov made changes -
            Summary ALTER from INT to DATETIME returns a wrong result ALTER from DECIMAL and INT to DATETIME returns a wrong result
            elenst Elena Stepanova made changes -
            Affects Version/s 5.5 [ 15800 ]
            Affects Version/s 10.0 [ 16000 ]
            Affects Version/s 10.1 [ 16100 ]
            bar Alexander Barkov made changes -
            Component/s Temporal Types [ 11000 ]
            bar Alexander Barkov made changes -
            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 ]
            serg Sergei Golubchik made changes -
            Workflow MariaDB v3 [ 73335 ] MariaDB v4 [ 149946 ]

            People

              bar Alexander Barkov
              bar Alexander Barkov
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.