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

UNION creates excessive integer column types for functions

Details

    Description

      CREATE OR REPLACE TABLE t1 AS SELECT 1=1;
      SHOW CREATE TABLE t1;
      CREATE OR REPLACE TABLE t1 AS SELECT 1=1 UNION SELECT 1=1;
      SHOW CREATE TABLE t1;
      

      Notice:

      • The first CREATE statement made a column of the int(1) type.
      • The second CREATE statement with UNION made a column the bigint(11) type. Looks excessive. An int column would be enough.

      More examples:

      CREATE OR REPLACE TABLE t1 AS SELECT strcmp('a','b');
      SHOW CREATE TABLE t1;
      CREATE OR REPLACE TABLE t1 AS SELECT strcmp('a','b') UNION SELECT strcmp('c','d'); 
      SHOW CREATE TABLE t1;
      

      CREATE OR REPLACE TABLE t1 AS SELECT 1+1;
      SHOW CREATE TABLE t1;
      CREATE OR REPLACE TABLE t1 AS SELECT 1+1 UNION SELECT 1+1;
      SHOW CREATE TABLE t1;
      

      CREATE OR REPLACE TABLE t1 AS SELECT EXISTS (SELECT 1);
      SHOW CREATE TABLE t1;
      CREATE OR REPLACE TABLE t1 AS SELECT EXISTS (SELECT 1) UNION SELECT EXISTS (SELECT 1);
      SHOW CREATE TABLE t1;
      

      CREATE OR REPLACE TABLE t1 AS SELECT MONTH(NOW());
      SHOW CREATE TABLE t1;
      CREATE OR REPLACE TABLE t1 AS SELECT MONTH(NOW()) UNION SELECT MONTH(NOW());
      SHOW CREATE TABLE t1;
      

      CREATE OR REPLACE TABLE t1 AS SELECT WEEKDAY(NOW());
      SHOW CREATE TABLE t1;
      CREATE OR REPLACE TABLE t1 AS SELECT WEEKDAY(NOW()) UNION SELECT WEEKDAY(NOW());
      SHOW CREATE TABLE t1;
      

      Attachments

        Issue Links

          Activity

            bar Alexander Barkov created issue -
            bar Alexander Barkov made changes -
            Field Original Value New Value
            bar Alexander Barkov made changes -
            Description
            {code:sql}
            CREATE OR REPLACE TABLE t1 AS SELECT 1;
            SHOW CREATE TABLE t1;
            CREATE OR REPLACE TABLE t1 AS SELECT 1 UNION SELECT 1;
            SHOW CREATE TABLE t1;
            {code}
            Notice:
            - The first {{CREATE}} statement made a column of the {{int(1)}} type.
            - The second {{CREATE}} statement with {{UNION}} made a column the {{bigint(11)}} type. Looks excessive. An {{int}} column would be enough.

            {code:sql}
            CREATE OR REPLACE TABLE t1 AS SELECT 1=1;
            SHOW CREATE TABLE t1;
            CREATE OR REPLACE TABLE t1 AS SELECT 1=1 UNION SELECT 1=1;
            SHOW CREATE TABLE t1;
            {code}

            {code:sql}
            CREATE OR REPLACE TABLE t1 AS SELECT strcmp('a','b');
            SHOW CREATE TABLE t1;
            CREATE OR REPLACE TABLE t1 AS SELECT strcmp('a','b') UNION SELECT strcmp('c','d');
            SHOW CREATE TABLE t1;
            {code}

            {code:sql}
            CREATE OR REPLACE TABLE t1 AS SELECT 1+1;
            SHOW CREATE TABLE t1;
            CREATE OR REPLACE TABLE t1 AS SELECT 1+1 UNION SELECT 1+1;
            SHOW CREATE TABLE t1;
            {code}

            {code:sql}
            CREATE OR REPLACE TABLE t1 AS SELECT EXISTS (SELECT 1);
            SHOW CREATE TABLE t1;
            CREATE OR REPLACE TABLE t1 AS SELECT EXISTS (SELECT 1) UNION SELECT EXISTS (SELECT 1);
            SHOW CREATE TABLE t1;
            {code}

            {code:sql}
            CREATE OR REPLACE TABLE t1 AS SELECT MONTH(NOW());
            SHOW CREATE TABLE t1;
            CREATE OR REPLACE TABLE t1 AS SELECT MONTH(NOW()) UNION SELECT MONTH(NOW());
            SHOW CREATE TABLE t1;
            {code}

            {code:sql}
            CREATE OR REPLACE TABLE t1 AS SELECT WEEKDAY(NOW());
            SHOW CREATE TABLE t1;
            CREATE OR REPLACE TABLE t1 AS SELECT WEEKDAY(NOW()) UNION SELECT WEEKDAY(NOW());
            SHOW CREATE TABLE t1;
            {code}
            {code:sql}
            CREATE OR REPLACE TABLE t1 AS SELECT 1=1;
            SHOW CREATE TABLE t1;
            CREATE OR REPLACE TABLE t1 AS SELECT 1=1 UNION SELECT 1=1;
            SHOW CREATE TABLE t1;
            {code}
            Notice:
            - The first {{CREATE}} statement made a column of the {{int(1)}} type.
            - The second {{CREATE}} statement with {{UNION}} made a column the {{bigint(11)}} type. Looks excessive. An {{int}} column would be enough.

            More examples:

            {code:sql}
            CREATE OR REPLACE TABLE t1 AS SELECT strcmp('a','b');
            SHOW CREATE TABLE t1;
            CREATE OR REPLACE TABLE t1 AS SELECT strcmp('a','b') UNION SELECT strcmp('c','d');
            SHOW CREATE TABLE t1;
            {code}

            {code:sql}
            CREATE OR REPLACE TABLE t1 AS SELECT 1+1;
            SHOW CREATE TABLE t1;
            CREATE OR REPLACE TABLE t1 AS SELECT 1+1 UNION SELECT 1+1;
            SHOW CREATE TABLE t1;
            {code}

            {code:sql}
            CREATE OR REPLACE TABLE t1 AS SELECT EXISTS (SELECT 1);
            SHOW CREATE TABLE t1;
            CREATE OR REPLACE TABLE t1 AS SELECT EXISTS (SELECT 1) UNION SELECT EXISTS (SELECT 1);
            SHOW CREATE TABLE t1;
            {code}

            {code:sql}
            CREATE OR REPLACE TABLE t1 AS SELECT MONTH(NOW());
            SHOW CREATE TABLE t1;
            CREATE OR REPLACE TABLE t1 AS SELECT MONTH(NOW()) UNION SELECT MONTH(NOW());
            SHOW CREATE TABLE t1;
            {code}

            {code:sql}
            CREATE OR REPLACE TABLE t1 AS SELECT WEEKDAY(NOW());
            SHOW CREATE TABLE t1;
            CREATE OR REPLACE TABLE t1 AS SELECT WEEKDAY(NOW()) UNION SELECT WEEKDAY(NOW());
            SHOW CREATE TABLE t1;
            {code}
            bar Alexander Barkov made changes -
            Summary UNION creates excessive integer column types UNION creates excessive integer column types for functions
            bar Alexander Barkov made changes -
            bar Alexander Barkov made changes -
            Component/s Data types [ 13906 ]
            Component/s OTHER [ 10125 ]
            serg Sergei Golubchik made changes -
            Fix Version/s 10.4 [ 22408 ]
            julien.fritsch Julien Fritsch made changes -
            Epic Link MDEV-21071 [ 80504 ]
            julien.fritsch Julien Fritsch made changes -
            serg Sergei Golubchik made changes -
            Workflow MariaDB v3 [ 80503 ] MariaDB v4 [ 140283 ]
            julien.fritsch Julien Fritsch made changes -
            Fix Version/s 10.3 [ 22126 ]

            People

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

              Dates

                Created:
                Updated:

                Git Integration

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