Skip to content
Permalink
Browse files
MDEV-29062 Wrong result set metadata for a mix of INT+ENUM
  • Loading branch information
abarkov committed Jul 8, 2022
1 parent a5f7850 commit 3808745
Show file tree
Hide file tree
Showing 12 changed files with 171 additions and 53 deletions.
@@ -1609,14 +1609,14 @@ def ifnull___a_a 253 10 1 Y 0 39 8
def least____a_a 253 10 1 Y 0 39 8
def greatest_a_a 253 10 1 Y 0 39 8
def test t1 t1 b ___________b 254 1 1 Y 256 0 8
def case_______b 254 1 1 Y 0 39 8
def case_____b_b 254 1 1 Y 0 39 8
def coalesce___b 254 1 1 Y 0 39 8
def coalesce_b_b 254 1 1 Y 0 39 8
def if_______b_b 254 1 1 Y 0 39 8
def ifnull___b_b 254 1 1 Y 0 39 8
def least____b_b 254 1 1 Y 0 39 8
def greatest_b_b 254 1 1 Y 0 39 8
def case_______b 253 1 1 Y 0 39 8
def case_____b_b 253 1 1 Y 0 39 8
def coalesce___b 253 1 1 Y 0 39 8
def coalesce_b_b 253 1 1 Y 0 39 8
def if_______b_b 253 1 1 Y 0 39 8
def ifnull___b_b 253 1 1 Y 0 39 8
def least____b_b 253 1 1 Y 0 39 8
def greatest_b_b 253 1 1 Y 0 39 8
___________a a
case_______a a
case_____a_a a
@@ -707,7 +707,7 @@ Table Create Table
t2 CREATE TABLE `t2` (
`a` int(11) DEFAULT NULL,
`b` text DEFAULT NULL,
`c` char(1) DEFAULT NULL
`c` varchar(1) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP PROCEDURE p2;
DROP PROCEDURE p1;
@@ -469,8 +469,8 @@ t2 CREATE TABLE `t2` (
`t2` text DEFAULT NULL,
`t3` mediumtext DEFAULT NULL,
`t4` longtext DEFAULT NULL,
`enum1` char(1) DEFAULT NULL,
`set1` char(5) DEFAULT NULL,
`enum1` varchar(1) DEFAULT NULL,
`set1` varchar(5) DEFAULT NULL,
`blob1` tinyblob DEFAULT NULL,
`blob2` blob DEFAULT NULL,
`blob3` mediumblob DEFAULT NULL,
@@ -631,8 +631,8 @@ t2 CREATE TABLE `t2` (
`t2` text DEFAULT NULL,
`t3` mediumtext DEFAULT NULL,
`t4` longtext DEFAULT NULL,
`enum1` char(1) DEFAULT NULL,
`set1` char(5) DEFAULT NULL,
`enum1` varchar(1) DEFAULT NULL,
`set1` varchar(5) DEFAULT NULL,
`blob1` tinyblob DEFAULT NULL,
`blob2` blob DEFAULT NULL,
`blob3` mediumblob DEFAULT NULL,
@@ -1044,7 +1044,7 @@ t1 CREATE TABLE `t1` (
`a_flt0` float DEFAULT NULL,
`a_dbl0` double DEFAULT NULL,
`a_bit3` bit(3) DEFAULT NULL,
`a_enum0` char(1) DEFAULT NULL,
`a_enum0` varchar(1) DEFAULT NULL,
`a_varchar10` varchar(10) DEFAULT NULL,
`a_text1` text DEFAULT NULL,
`a_tinytext1` tinytext DEFAULT NULL,
@@ -1062,7 +1062,7 @@ t1 CREATE TABLE `t1` (
`aa_flt0` float DEFAULT NULL,
`aa_dbl0` double DEFAULT NULL,
`aa_bit3` bit(3) DEFAULT NULL,
`aa_enum0` char(1) DEFAULT NULL,
`aa_enum0` varchar(1) DEFAULT NULL,
`aa_varchar10` varchar(10) DEFAULT NULL,
`aa_text1` text DEFAULT NULL,
`aa_tinytext1` tinytext DEFAULT NULL,
@@ -1307,7 +1307,7 @@ $$
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE "t1" (
"var" char(1) DEFAULT NULL
"var" varchar(1) DEFAULT NULL
)
DROP TABLE t1;
#
@@ -2353,3 +2353,34 @@ a FLOOR(a) CEILING(a) TRUNCATE(a,0) ROUND(a)
999999999999999999999999999999999999999999999999999999999999 1 1 1 1
DROP TABLE t2;
DROP TABLE t1;
#
# MDEV-29062 Wrong result set metadata for a mix of INT+ENUM
#
CREATE TABLE t1
(
c_int INT,
c_enum ENUM('1')
);
CREATE TABLE t2 AS SELECT c_int FROM t1 UNION SELECT c_enum FROM t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`c_int` varchar(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t2;
CREATE OR REPLACE TABLE t2 AS SELECT COALESCE(c_int, c_enum) FROM t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`COALESCE(c_int, c_enum)` varchar(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t2;
SELECT c_int FROM t1 UNION SELECT c_enum FROM t1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def c_int c_int 253 11 0 Y 0 0 8
c_int
SELECT COALESCE(c_int, c_enum) FROM t1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def COALESCE(c_int, c_enum) 253 11 0 Y 0 39 8
COALESCE(c_int, c_enum)
DROP TABLE t1;
@@ -551,3 +551,31 @@ SHOW CREATE TABLE t2;
SELECT * FROM t2;
DROP TABLE t2;
DROP TABLE t1;


--echo #
--echo # MDEV-29062 Wrong result set metadata for a mix of INT+ENUM
--echo #

CREATE TABLE t1
(
c_int INT,
c_enum ENUM('1')
);

CREATE TABLE t2 AS SELECT c_int FROM t1 UNION SELECT c_enum FROM t1;
SHOW CREATE TABLE t2;
DROP TABLE t2;

CREATE OR REPLACE TABLE t2 AS SELECT COALESCE(c_int, c_enum) FROM t1;
SHOW CREATE TABLE t2;
DROP TABLE t2;

--disable_ps_protocol
--enable_metadata
SELECT c_int FROM t1 UNION SELECT c_enum FROM t1;
SELECT COALESCE(c_int, c_enum) FROM t1;
--disable_metadata
--enable_ps_protocol

DROP TABLE t1;
@@ -379,3 +379,34 @@ a FLOOR(a) CEILING(a) TRUNCATE(a,0) ROUND(a)
999999999999999999999999999999999999999999999999999999999999 1 1 1 1
DROP TABLE t2;
DROP TABLE t1;
#
# MDEV-29062 Wrong result set metadata for a mix of INT+ENUM
#
CREATE TABLE t1
(
c_int INT,
c_set SET('1')
);
CREATE TABLE t2 AS SELECT c_int FROM t1 UNION SELECT c_set FROM t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`c_int` varchar(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t2;
CREATE OR REPLACE TABLE t2 AS SELECT COALESCE(c_int, c_set) FROM t1;
SHOW CREATE TABLE t2;
Table Create Table
t2 CREATE TABLE `t2` (
`COALESCE(c_int, c_set)` varchar(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t2;
SELECT c_int FROM t1 UNION SELECT c_set FROM t1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def c_int c_int 253 33 0 Y 0 0 33
c_int
SELECT COALESCE(c_int, c_set) FROM t1;
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
def COALESCE(c_int, c_set) 253 33 0 Y 0 39 33
COALESCE(c_int, c_set)
DROP TABLE t1;
@@ -261,3 +261,31 @@ SHOW CREATE TABLE t2;
SELECT * FROM t2;
DROP TABLE t2;
DROP TABLE t1;


--echo #
--echo # MDEV-29062 Wrong result set metadata for a mix of INT+ENUM
--echo #

CREATE TABLE t1
(
c_int INT,
c_set SET('1')
);

CREATE TABLE t2 AS SELECT c_int FROM t1 UNION SELECT c_set FROM t1;
SHOW CREATE TABLE t2;
DROP TABLE t2;

CREATE OR REPLACE TABLE t2 AS SELECT COALESCE(c_int, c_set) FROM t1;
SHOW CREATE TABLE t2;
DROP TABLE t2;

--disable_ps_protocol
--enable_metadata
SELECT c_int FROM t1 UNION SELECT c_set FROM t1;
SELECT COALESCE(c_int, c_set) FROM t1;
--disable_metadata
--enable_ps_protocol

DROP TABLE t1;
@@ -21,7 +21,7 @@ Table Create Table
t2 CREATE TABLE "t2" (
"a" int(11) DEFAULT NULL,
"b" text DEFAULT NULL,
"c" char(1) DEFAULT NULL
"c" varchar(1) DEFAULT NULL
)
DROP PROCEDURE p2;
DROP PROCEDURE p1;
@@ -1703,8 +1703,8 @@ t2 CREATE TABLE "t2" (
"t2" text DEFAULT NULL,
"t3" mediumtext DEFAULT NULL,
"t4" longtext DEFAULT NULL,
"enum1" char(1) DEFAULT NULL,
"set1" char(5) DEFAULT NULL,
"enum1" varchar(1) DEFAULT NULL,
"set1" varchar(5) DEFAULT NULL,
"blob1" tinyblob DEFAULT NULL,
"blob2" longblob DEFAULT NULL,
"blob3" mediumblob DEFAULT NULL,
@@ -1865,8 +1865,8 @@ t2 CREATE TABLE "t2" (
"t2" text DEFAULT NULL,
"t3" mediumtext DEFAULT NULL,
"t4" longtext DEFAULT NULL,
"enum1" char(1) DEFAULT NULL,
"set1" char(5) DEFAULT NULL,
"enum1" varchar(1) DEFAULT NULL,
"set1" varchar(5) DEFAULT NULL,
"blob1" tinyblob DEFAULT NULL,
"blob2" longblob DEFAULT NULL,
"blob3" mediumblob DEFAULT NULL,
@@ -2370,7 +2370,7 @@ t1 CREATE TABLE "t1" (
"a_flt0" float DEFAULT NULL,
"a_dbl0" double DEFAULT NULL,
"a_bit3" bit(3) DEFAULT NULL,
"a_enum0" char(1) DEFAULT NULL,
"a_enum0" varchar(1) DEFAULT NULL,
"a_varchar10" varchar(10) DEFAULT NULL,
"a_text1" text DEFAULT NULL,
"a_tinytext1" tinytext DEFAULT NULL,
@@ -2388,7 +2388,7 @@ t1 CREATE TABLE "t1" (
"aa_flt0" float DEFAULT NULL,
"aa_dbl0" double DEFAULT NULL,
"aa_bit3" bit(3) DEFAULT NULL,
"aa_enum0" char(1) DEFAULT NULL,
"aa_enum0" varchar(1) DEFAULT NULL,
"aa_varchar10" varchar(10) DEFAULT NULL,
"aa_text1" text DEFAULT NULL,
"aa_tinytext1" tinytext DEFAULT NULL,

0 comments on commit 3808745

Please sign in to comment.