You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-29 08:21:15 +03:00
[MCOL-5205] Fix bug from union type in UNION processing.
This patch fixs the reported JIRA issue MCOL 5205, which consists of a wrong union type from two input Int types. The bug results in wrong unioned answers in CS. The fix includes more INT case discussions. Additionaly, this patch provides detailed unit tests for correctness in UNION processing with Int. Signed-off-by: Jigao Luo <luojigao@outlook.com>
This commit is contained in:
@ -6,21 +6,639 @@ USE mcs_union;
|
||||
# MCOL-4700 Wrong result of a UNION for INT and INT UNSIGNED
|
||||
#
|
||||
CREATE TABLE t1 (a INT, b INT UNSIGNED);
|
||||
INSERT INTO t1 VALUES (-1,1);
|
||||
INSERT INTO t1 VALUES (-1, 1), (-1, 1), (-2, 2);
|
||||
SELECT * FROM (SELECT * FROM t1 UNION SELECT * FROM t1) tu ORDER BY b;
|
||||
a b
|
||||
-1 1
|
||||
-2 2
|
||||
SELECT * FROM (SELECT a FROM t1 UNION SELECT b FROM t1) tu ORDER BY a;
|
||||
a
|
||||
-2
|
||||
-1
|
||||
1
|
||||
2
|
||||
SELECT * FROM (SELECT b FROM t1 UNION SELECT a FROM t1) tu ORDER BY b;
|
||||
b
|
||||
-2
|
||||
-1
|
||||
1
|
||||
2
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Multiple Columns Union
|
||||
#
|
||||
CREATE TABLE t1 (a INT, b INT, c INT);
|
||||
INSERT INTO t1 VALUES (-1, 1, 0), (-2, 2, 0), (-3, 3, 0), (-4, 4, 0), (-5, 5, 0), (-1, 1, 0), (-2, 2, 0), (-3, 3, 0), (-4, 4, 0), (-5, 5, 0);
|
||||
SELECT * FROM (SELECT * FROM t1 UNION ALL SELECT * FROM t1) tu ORDER BY b;
|
||||
a b c
|
||||
-1 1 0
|
||||
-1 1 0
|
||||
-1 1 0
|
||||
-1 1 0
|
||||
-2 2 0
|
||||
-2 2 0
|
||||
-2 2 0
|
||||
-2 2 0
|
||||
-3 3 0
|
||||
-3 3 0
|
||||
-3 3 0
|
||||
-3 3 0
|
||||
-4 4 0
|
||||
-4 4 0
|
||||
-4 4 0
|
||||
-4 4 0
|
||||
-5 5 0
|
||||
-5 5 0
|
||||
-5 5 0
|
||||
-5 5 0
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT b FROM t1) tu ORDER BY a;
|
||||
a
|
||||
-5
|
||||
-5
|
||||
-4
|
||||
-4
|
||||
-3
|
||||
-3
|
||||
-2
|
||||
-2
|
||||
-1
|
||||
-1
|
||||
1
|
||||
1
|
||||
2
|
||||
2
|
||||
3
|
||||
3
|
||||
4
|
||||
4
|
||||
5
|
||||
5
|
||||
SELECT * FROM (SELECT b FROM t1 UNION ALL SELECT a FROM t1) tu ORDER BY b;
|
||||
b
|
||||
-5
|
||||
-5
|
||||
-4
|
||||
-4
|
||||
-3
|
||||
-3
|
||||
-2
|
||||
-2
|
||||
-1
|
||||
-1
|
||||
1
|
||||
1
|
||||
2
|
||||
2
|
||||
3
|
||||
3
|
||||
4
|
||||
4
|
||||
5
|
||||
5
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Same Int Type Union
|
||||
#
|
||||
CREATE TABLE t1 (a INT UNSIGNED, b INT UNSIGNED);
|
||||
INSERT INTO t1 VALUES (1, 1), (1, 1), (2, 1), (2, 1), (3, 2), (4, 2), (5, 2);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION SELECT b FROM t1) tu ORDER BY a;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
SELECT * FROM (SELECT b FROM t1 UNION SELECT a FROM t1) tu ORDER BY b;
|
||||
b
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
SELECT * FROM (SELECT * FROM t1 UNION SELECT * FROM t1) tu ORDER BY a;
|
||||
a b
|
||||
1 1
|
||||
2 1
|
||||
3 2
|
||||
4 2
|
||||
5 2
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a INT, b INT);
|
||||
INSERT INTO t1 VALUES (-1, -1), (-1, -1), (2, 1), (2, 1), (3, 2), (4, 2), (5, 2);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION SELECT b FROM t1) tu ORDER BY a;
|
||||
a
|
||||
-1
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
SELECT * FROM (SELECT b FROM t1 UNION SELECT a FROM t1) tu ORDER BY b;
|
||||
b
|
||||
-1
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
SELECT * FROM (SELECT * FROM t1 UNION SELECT * FROM t1) tu ORDER BY a;
|
||||
a b
|
||||
-1 -1
|
||||
2 1
|
||||
3 2
|
||||
4 2
|
||||
5 2
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Signed Int Union
|
||||
#
|
||||
CREATE TABLE t1 (a TINYINT);
|
||||
INSERT INTO t1 VALUES (CAST(0xFFFFFFFFFFFFFF80 AS SIGNED)+2),(-1),(0),(1),(0x7F);
|
||||
CREATE TABLE t2 (a SMALLINT);
|
||||
INSERT INTO t2 VALUES (CAST(0xFFFFFFFFFFFF8000 AS SIGNED)+2),(-1),(0),(1),(0x7FFF);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
-32766
|
||||
-126
|
||||
-1
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
127
|
||||
32767
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
-32766
|
||||
-126
|
||||
-1
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
127
|
||||
32767
|
||||
DROP TABLE t2;
|
||||
CREATE TABLE t2 (a MEDIUMINT);
|
||||
INSERT INTO t2 VALUES (CAST(0xFFFFFFFFFF800000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFF);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
-8388606
|
||||
-126
|
||||
-1
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
127
|
||||
8388607
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
-8388606
|
||||
-126
|
||||
-1
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
127
|
||||
8388607
|
||||
DROP TABLE t2;
|
||||
CREATE TABLE t2 (a INT);
|
||||
INSERT INTO t2 VALUES (CAST(0xFFFFFFFF80000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFF);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
-2147483646
|
||||
-126
|
||||
-1
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
127
|
||||
2147483647
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
-2147483646
|
||||
-126
|
||||
-1
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
127
|
||||
2147483647
|
||||
DROP TABLE t2;
|
||||
CREATE TABLE t2 (a BIGINT);
|
||||
INSERT INTO t2 VALUES (CAST(0x8000000000000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFFFFFFFFFF);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
-9223372036854775806
|
||||
-126
|
||||
-1
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
127
|
||||
9223372036854775807
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
-9223372036854775806
|
||||
-126
|
||||
-1
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
127
|
||||
9223372036854775807
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (a SMALLINT);
|
||||
INSERT INTO t1 VALUES (CAST(0xFFFFFFFFFFFF8000 AS SIGNED)+2),(-1),(0),(1),(0x7FFF);
|
||||
CREATE TABLE t2 (a MEDIUMINT);
|
||||
INSERT INTO t2 VALUES (CAST(0xFFFFFFFFFF800000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFF);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
-8388606
|
||||
-32766
|
||||
-1
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
32767
|
||||
8388607
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
-8388606
|
||||
-32766
|
||||
-1
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
32767
|
||||
8388607
|
||||
DROP TABLE t2;
|
||||
CREATE TABLE t2 (a INT);
|
||||
INSERT INTO t2 VALUES (CAST(0xFFFFFFFF80000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFF);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
-2147483646
|
||||
-32766
|
||||
-1
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
32767
|
||||
2147483647
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
-2147483646
|
||||
-32766
|
||||
-1
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
32767
|
||||
2147483647
|
||||
DROP TABLE t2;
|
||||
CREATE TABLE t2 (a BIGINT);
|
||||
INSERT INTO t2 VALUES (CAST(0x8000000000000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFFFFFFFFFF);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
-9223372036854775806
|
||||
-32766
|
||||
-1
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
32767
|
||||
9223372036854775807
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
-9223372036854775806
|
||||
-32766
|
||||
-1
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
32767
|
||||
9223372036854775807
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (a MEDIUMINT);
|
||||
INSERT INTO t1 VALUES (CAST(0xFFFFFFFFFF800000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFF);
|
||||
CREATE TABLE t2 (a INT);
|
||||
INSERT INTO t2 VALUES (CAST(0xFFFFFFFF80000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFF);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
-2147483646
|
||||
-8388606
|
||||
-1
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
8388607
|
||||
2147483647
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
-2147483646
|
||||
-8388606
|
||||
-1
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
8388607
|
||||
2147483647
|
||||
DROP TABLE t2;
|
||||
CREATE TABLE t2 (a BIGINT);
|
||||
INSERT INTO t2 VALUES (CAST(0x8000000000000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFFFFFFFFFF);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
-9223372036854775806
|
||||
-8388606
|
||||
-1
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
8388607
|
||||
9223372036854775807
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
-9223372036854775806
|
||||
-8388606
|
||||
-1
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
8388607
|
||||
9223372036854775807
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (a INT);
|
||||
INSERT INTO t1 VALUES (CAST(0xFFFFFFFF80000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFF);
|
||||
CREATE TABLE t2 (a BIGINT);
|
||||
INSERT INTO t2 VALUES (CAST(0x8000000000000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFFFFFFFFFF);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
-9223372036854775806
|
||||
-2147483646
|
||||
-1
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
2147483647
|
||||
9223372036854775807
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
-9223372036854775806
|
||||
-2147483646
|
||||
-1
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
2147483647
|
||||
9223372036854775807
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Unsigned Int Union
|
||||
#
|
||||
CREATE TABLE t1 (a TINYINT UNSIGNED);
|
||||
INSERT INTO t1 VALUES (0),(1),(0xFF-2);
|
||||
CREATE TABLE t2 (a SMALLINT UNSIGNED);
|
||||
INSERT INTO t2 VALUES (0),(1),(0xFFFF-2);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
253
|
||||
65533
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
253
|
||||
65533
|
||||
DROP TABLE t2;
|
||||
CREATE TABLE t2 (a MEDIUMINT UNSIGNED);
|
||||
INSERT INTO t2 VALUES (0),(1),(0xFFFFFF-2);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
253
|
||||
16777213
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
253
|
||||
16777213
|
||||
DROP TABLE t2;
|
||||
CREATE TABLE t2 (a INT UNSIGNED);
|
||||
INSERT INTO t2 VALUES (0),(1),(0xFFFFFFFF-2);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
253
|
||||
4294967293
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
253
|
||||
4294967293
|
||||
DROP TABLE t2;
|
||||
CREATE TABLE t2 (a BIGINT UNSIGNED);
|
||||
INSERT INTO t2 VALUES (0),(1),(0xFFFFFFFFFFFFFFFF-2);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
253
|
||||
18446744073709551613
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
253
|
||||
18446744073709551613
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (a SMALLINT UNSIGNED);
|
||||
INSERT INTO t1 VALUES (0),(1),(0xFFFF-2);
|
||||
CREATE TABLE t2 (a MEDIUMINT UNSIGNED);
|
||||
INSERT INTO t2 VALUES (0),(1),(0xFFFFFF-2);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
65533
|
||||
16777213
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
65533
|
||||
16777213
|
||||
DROP TABLE t2;
|
||||
CREATE TABLE t2 (a INT UNSIGNED);
|
||||
INSERT INTO t2 VALUES (0),(1),(0xFFFFFFFF-2);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
65533
|
||||
4294967293
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
65533
|
||||
4294967293
|
||||
DROP TABLE t2;
|
||||
CREATE TABLE t2 (a BIGINT UNSIGNED);
|
||||
INSERT INTO t2 VALUES (0),(1),(0xFFFFFFFFFFFFFFFF-2);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
65533
|
||||
18446744073709551613
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
65533
|
||||
18446744073709551613
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (a MEDIUMINT UNSIGNED);
|
||||
INSERT INTO t1 VALUES (0),(1),(0xFFFFFF-2);
|
||||
CREATE TABLE t2 (a INT UNSIGNED);
|
||||
INSERT INTO t2 VALUES (0),(1),(0xFFFFFFFF-2);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
16777213
|
||||
4294967293
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
16777213
|
||||
4294967293
|
||||
DROP TABLE t2;
|
||||
CREATE TABLE t2 (a BIGINT UNSIGNED);
|
||||
INSERT INTO t2 VALUES (0),(1),(0xFFFFFFFFFFFFFFFF-2);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
16777213
|
||||
18446744073709551613
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
16777213
|
||||
18446744073709551613
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (a INT UNSIGNED);
|
||||
INSERT INTO t1 VALUES (0),(1),(0xFFFFFFFF-2);
|
||||
CREATE TABLE t2 (a BIGINT UNSIGNED);
|
||||
INSERT INTO t2 VALUES (0),(1),(0xFFFFFFFFFFFFFFFF-2);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
4294967293
|
||||
18446744073709551613
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
4294967293
|
||||
18446744073709551613
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Same Size Different Signedness Int Union
|
||||
#
|
||||
CREATE TABLE t1 (a TINYINT);
|
||||
INSERT INTO t1 VALUES (CAST(0xFFFFFFFFFFFFFF80 AS SIGNED)+2),(-1),(0),(1),(0x7F);
|
||||
CREATE TABLE t2 (a TINYINT UNSIGNED);
|
||||
INSERT INTO t2 VALUES (0),(1),(0xFF-2);
|
||||
(SELECT a FROM t1 UNION ALL SELECT a FROM t2) ORDER BY a;
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
-126
|
||||
-1
|
||||
@ -30,7 +648,7 @@ a
|
||||
1
|
||||
127
|
||||
253
|
||||
(SELECT a FROM t2 UNION ALL SELECT a FROM t1) ORDER BY a;
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
-126
|
||||
-1
|
||||
@ -43,9 +661,9 @@ a
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (a SMALLINT);
|
||||
INSERT INTO t1 VALUES (CAST(0xFFFFFFFFFFFF8000 AS SIGNED)+2),(-1),(0),(1),(0x7FFF);
|
||||
CREATE TABLE t2 (a INT UNSIGNED);
|
||||
CREATE TABLE t2 (a SMALLINT UNSIGNED);
|
||||
INSERT INTO t2 VALUES (0),(1),(0xFFFF-2);
|
||||
(SELECT a FROM t1 UNION ALL SELECT * FROM t2) ORDER BY a;
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT * FROM t2) tu ORDER BY a;
|
||||
a
|
||||
-32766
|
||||
-1
|
||||
@ -55,7 +673,7 @@ a
|
||||
1
|
||||
32767
|
||||
65533
|
||||
(SELECT a FROM t2 UNION ALL SELECT a FROM t1) ORDER BY a;
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
-32766
|
||||
-1
|
||||
@ -68,9 +686,9 @@ a
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (a MEDIUMINT);
|
||||
INSERT INTO t1 VALUES (CAST(0xFFFFFFFFFF800000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFF);
|
||||
CREATE TABLE t2 (a INT UNSIGNED);
|
||||
CREATE TABLE t2 (a MEDIUMINT UNSIGNED);
|
||||
INSERT INTO t2 VALUES (0),(1),(0xFFFFFF-2);
|
||||
(SELECT a FROM t1 UNION ALL SELECT a FROM t2) ORDER BY a;
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
-8388606
|
||||
-1
|
||||
@ -80,7 +698,7 @@ a
|
||||
1
|
||||
8388607
|
||||
16777213
|
||||
(SELECT a FROM t2 UNION ALL SELECT a FROM t1) ORDER BY a;
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
-8388606
|
||||
-1
|
||||
@ -95,7 +713,7 @@ CREATE TABLE t1 (a INT);
|
||||
INSERT INTO t1 VALUES (CAST(0xFFFFFFFF80000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFF);
|
||||
CREATE TABLE t2 (a INT UNSIGNED);
|
||||
INSERT INTO t2 VALUES (0),(1),(0xFFFFFFFF-2);
|
||||
(SELECT a FROM t1 UNION ALL SELECT a FROM t2) ORDER BY a;
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
-2147483646
|
||||
-1
|
||||
@ -105,7 +723,7 @@ a
|
||||
1
|
||||
2147483647
|
||||
4294967293
|
||||
(SELECT a FROM t2 UNION ALL SELECT a FROM t1) ORDER BY a;
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
-2147483646
|
||||
-1
|
||||
@ -120,7 +738,7 @@ CREATE TABLE t1 (a BIGINT);
|
||||
INSERT INTO t1 VALUES (CAST(0x8000000000000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFFFFFFFFFF);
|
||||
CREATE TABLE t2 (a BIGINT UNSIGNED);
|
||||
INSERT INTO t2 VALUES (0),(1),(0xFFFFFFFFFFFFFFFF-2);
|
||||
(SELECT a FROM t1 UNION ALL SELECT a FROM t2) ORDER BY a;
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
-9223372036854775806
|
||||
-1
|
||||
@ -130,7 +748,7 @@ a
|
||||
1
|
||||
9223372036854775807
|
||||
18446744073709551613
|
||||
(SELECT a FROM t2 UNION ALL SELECT a FROM t1) ORDER BY a;
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
-9223372036854775806
|
||||
-1
|
||||
@ -141,4 +759,107 @@ a
|
||||
9223372036854775807
|
||||
18446744073709551613
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Different Size Different Signedness Int Union
|
||||
#
|
||||
CREATE TABLE t1 (a TINYINT);
|
||||
INSERT INTO t1 VALUES (CAST(0xFFFFFFFFFFFFFF80 AS SIGNED)+2),(-1),(0),(1),(0x7F);
|
||||
CREATE TABLE t2 (a INT UNSIGNED);
|
||||
INSERT INTO t2 VALUES (0),(1),(0xFFFF-2);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT * FROM t2) tu ORDER BY a;
|
||||
a
|
||||
-126
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
127
|
||||
65533
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
-126
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
127
|
||||
65533
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (a SMALLINT);
|
||||
INSERT INTO t1 VALUES (CAST(0xFFFFFFFFFFFF8000 AS SIGNED)+2),(-1),(0),(1),(0x7FFF);
|
||||
CREATE TABLE t2 (a INT UNSIGNED);
|
||||
INSERT INTO t2 VALUES (0),(1),(0xFFFF-2);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT * FROM t2) tu ORDER BY a;
|
||||
a
|
||||
-32766
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
32767
|
||||
65533
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
-32766
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
32767
|
||||
65533
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (a MEDIUMINT);
|
||||
INSERT INTO t1 VALUES (CAST(0xFFFFFFFFFF800000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFF);
|
||||
CREATE TABLE t2 (a INT UNSIGNED);
|
||||
INSERT INTO t2 VALUES (0),(1),(0xFFFFFF-2);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
-8388606
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
8388607
|
||||
16777213
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
-8388606
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
8388607
|
||||
16777213
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (a BIGINT);
|
||||
INSERT INTO t1 VALUES (CAST(0x8000000000000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFFFFFFFFFF);
|
||||
CREATE TABLE t2 (a INT UNSIGNED);
|
||||
INSERT INTO t2 VALUES (0),(1),(0xFFFFFF-2);
|
||||
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tu ORDER BY a;
|
||||
a
|
||||
-9223372036854775806
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
16777213
|
||||
9223372036854775807
|
||||
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tu ORDER BY a;
|
||||
a
|
||||
-9223372036854775806
|
||||
-1
|
||||
0
|
||||
0
|
||||
1
|
||||
1
|
||||
16777213
|
||||
9223372036854775807
|
||||
DROP TABLE t1,t2;
|
||||
DROP DATABASE mcs_union;
|
||||
|
Reference in New Issue
Block a user