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

FIRST_VALUE() does not preserve the exact data type

Details

    Description

      CREATE OR REPLACE TABLE t1 (a INT, b INT, c FLOAT);
      INSERT INTO t1 VALUES (1,1,1),(1,2,2),(2,1,1),(2,2,2);
      CREATE OR REPLACE TABLE t2 AS SELECT a, FIRST_VALUE(b) OVER(), FIRST_VALUE(c) OVER() FROM t1 GROUP BY a;
      SHOW CREATE TABLE t2;
      

      +-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
      | Table | Create Table                                                                                                                                                                            |
      +-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
      | t2    | CREATE TABLE `t2` (
        `a` int(11) DEFAULT NULL,
        `FIRST_VALUE(b) OVER()` bigint(11) DEFAULT NULL,
        `FIRST_VALUE(c) OVER()` double DEFAULT NULL
      ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
      +-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
      

      Notice:

      • INT(11) became BIGINT(11)
      • FLOAT became DOUBLE

      Attachments

        Issue Links

          Activity

            bar Alexander Barkov created issue -
            bar Alexander Barkov made changes -
            Field Original Value New Value
            bar Alexander Barkov made changes -
            bar Alexander Barkov made changes -
            Description
            {code:sql}
            CREATE OR REPLACE TABLE t1 (a INT, b INT, c FLOAT);
            INSERT INTO t1 VALUES (1,1,1),(1,2,2),(2,1,1),(2,2,2);
            CREATE OR REPLACE TABLE t2 AS SELECT a, FIRST_VALUE(b) OVER(), FIRST_VALUE(c) OVER() FROM t1 GROUP BY a;
            SHOW CREATE TABLE t2;
            {code}
            {noformat}
            +-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
            | Table | Create Table |
            +-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
            | t2 | CREATE TABLE `t2` (
              `a` int(11) DEFAULT NULL,
              `FIRST_VALUE(b) OVER()` bigint(11) DEFAULT NULL,
              `FIRST_VALUE(c) OVER()` double DEFAULT NULL
            ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
            +-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
            {noformat}
            {code:sql}
            CREATE OR REPLACE TABLE t1 (a INT, b INT, c FLOAT);
            INSERT INTO t1 VALUES (1,1,1),(1,2,2),(2,1,1),(2,2,2);
            CREATE OR REPLACE TABLE t2 AS SELECT a, FIRST_VALUE(b) OVER(), FIRST_VALUE(c) OVER() FROM t1 GROUP BY a;
            SHOW CREATE TABLE t2;
            {code}
            {noformat}
            +-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
            | Table | Create Table |
            +-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
            | t2 | CREATE TABLE `t2` (
              `a` int(11) DEFAULT NULL,
              `FIRST_VALUE(b) OVER()` bigint(11) DEFAULT NULL,
              `FIRST_VALUE(c) OVER()` double DEFAULT NULL
            ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
            +-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
            {noformat}

            Notice:
            - {{INT(11))}} became {{BIGINT(11)}}
            - {{FLOAT}} became {{DOUBLE}}

            bar Alexander Barkov made changes -
            Description {code:sql}
            CREATE OR REPLACE TABLE t1 (a INT, b INT, c FLOAT);
            INSERT INTO t1 VALUES (1,1,1),(1,2,2),(2,1,1),(2,2,2);
            CREATE OR REPLACE TABLE t2 AS SELECT a, FIRST_VALUE(b) OVER(), FIRST_VALUE(c) OVER() FROM t1 GROUP BY a;
            SHOW CREATE TABLE t2;
            {code}
            {noformat}
            +-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
            | Table | Create Table |
            +-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
            | t2 | CREATE TABLE `t2` (
              `a` int(11) DEFAULT NULL,
              `FIRST_VALUE(b) OVER()` bigint(11) DEFAULT NULL,
              `FIRST_VALUE(c) OVER()` double DEFAULT NULL
            ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
            +-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
            {noformat}

            Notice:
            - {{INT(11))}} became {{BIGINT(11)}}
            - {{FLOAT}} became {{DOUBLE}}

            {code:sql}
            CREATE OR REPLACE TABLE t1 (a INT, b INT, c FLOAT);
            INSERT INTO t1 VALUES (1,1,1),(1,2,2),(2,1,1),(2,2,2);
            CREATE OR REPLACE TABLE t2 AS SELECT a, FIRST_VALUE(b) OVER(), FIRST_VALUE(c) OVER() FROM t1 GROUP BY a;
            SHOW CREATE TABLE t2;
            {code}
            {noformat}
            +-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
            | Table | Create Table |
            +-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
            | t2 | CREATE TABLE `t2` (
              `a` int(11) DEFAULT NULL,
              `FIRST_VALUE(b) OVER()` bigint(11) DEFAULT NULL,
              `FIRST_VALUE(c) OVER()` double DEFAULT NULL
            ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
            +-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
            {noformat}

            Notice:
            - {{INT(11)}} became {{BIGINT(11)}}
            - {{FLOAT}} became {{DOUBLE}}

            bar Alexander Barkov made changes -
            Summary FIRST_VALUE() does not preserve the exact data typ FIRST_VALUE() does not preserve the exact data type
            bar Alexander Barkov made changes -
            issue.field.resolutiondate 2017-05-27 12:43:32.0 2017-05-27 12:43:32.452
            bar Alexander Barkov made changes -
            Fix Version/s 10.3.1 [ 22532 ]
            Fix Version/s 10.3 [ 22126 ]
            Resolution Fixed [ 1 ]
            Status Open [ 1 ] Closed [ 6 ]
            bar Alexander Barkov made changes -
            Component/s Data types [ 13906 ]
            serg Sergei Golubchik made changes -
            Workflow MariaDB v3 [ 80873 ] MariaDB v4 [ 152191 ]

            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.