[MDEV-12613] UNION creates excessive integer column types for functions Created: 2017-04-28  Updated: 2023-04-27

Status: Open
Project: MariaDB Server
Component/s: Data types
Affects Version/s: 10.1, 10.2, 10.3
Fix Version/s: 10.4

Type: Bug Priority: Major
Reporter: Alexander Barkov Assignee: Alexander Barkov
Resolution: Unresolved Votes: 0
Labels: datatype

Issue Links:
Relates
relates to MDEV-12619 UNION creates excessive integer colum... Closed
Epic Link: Data type cleanups

 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;


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