1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-29 08:21:15 +03:00

MDEV-25080 Some fixes:

1. In TupleUnion::writeNull(), add the missing switch case for
   wide decimal with 16bytes column width.
2. MCOL-5432 Disable complete/partial pushdown of UNION operation
   if the query involves an ORDER BY or a LIMIT clause, until
   MCOL-5222 is fixed. Also add MTR test cases for this.
This commit is contained in:
Gagan Goel
2023-02-22 08:45:02 -05:00
parent 4e2123ca80
commit 2f1f9c0ef0
4 changed files with 80 additions and 1 deletions

View File

@ -261,6 +261,53 @@ NULL PUSHED UNION NULL NULL NULL NULL NULL NULL NULL NULL
EXECUTE stmt;
id select_type table type possible_keys key key_len ref rows Extra
NULL PUSHED UNION NULL NULL NULL NULL NULL NULL NULL NULL
# MCOL-5432 Disable UNION pushdown if an ORDER BY or a LIMIT
# clause is involved, until MCOL-5222 is fixed.
SELECT * FROM t1 UNION ALL SELECT * FROM t2 ORDER BY a;
a
abc
bcd
bcd
cde
cde
def
efg
EXPLAIN SELECT * FROM t1 UNION ALL SELECT * FROM t2 ORDER BY a;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 2000
2 UNION t2 ALL NULL NULL NULL NULL 2000
NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL Using filesort
SELECT * FROM t1 UNION ALL SELECT * FROM t2 LIMIT 3;
a
abc
bcd
cde
EXPLAIN SELECT * FROM t1 UNION ALL SELECT * FROM t2 LIMIT 3;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 2000
2 UNION t2 ALL NULL NULL NULL NULL 2000
SELECT * FROM t1 UNION ALL SELECT * FROM t2 ORDER BY a DESC LIMIT 5;
a
efg
def
cde
cde
bcd
EXPLAIN SELECT * FROM t1 UNION ALL SELECT * FROM t2 ORDER BY a DESC LIMIT 5;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 2000
2 UNION t2 ALL NULL NULL NULL NULL 2000
NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL Using filesort
SELECT * FROM t1 UNION ALL SELECT * FROM t2 ORDER BY a LIMIT 3 OFFSET 2;
a
bcd
cde
cde
EXPLAIN SELECT * FROM t1 UNION ALL SELECT * FROM t2 ORDER BY a LIMIT 3 OFFSET 2;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 2000
2 UNION t2 ALL NULL NULL NULL NULL 2000
NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL Using filesort
DROP USER 'cejuser'@'localhost';
DROP TABLE t1, t2, t3, t4;
DROP DATABASE mdev25080;

View File

@ -169,6 +169,17 @@ PREPARE stmt FROM "EXPLAIN (SELECT * FROM t1 UNION
EXECUTE stmt;
EXECUTE stmt;
--echo # MCOL-5432 Disable UNION pushdown if an ORDER BY or a LIMIT
--echo # clause is involved, until MCOL-5222 is fixed.
SELECT * FROM t1 UNION ALL SELECT * FROM t2 ORDER BY a;
EXPLAIN SELECT * FROM t1 UNION ALL SELECT * FROM t2 ORDER BY a;
SELECT * FROM t1 UNION ALL SELECT * FROM t2 LIMIT 3;
EXPLAIN SELECT * FROM t1 UNION ALL SELECT * FROM t2 LIMIT 3;
SELECT * FROM t1 UNION ALL SELECT * FROM t2 ORDER BY a DESC LIMIT 5;
EXPLAIN SELECT * FROM t1 UNION ALL SELECT * FROM t2 ORDER BY a DESC LIMIT 5;
SELECT * FROM t1 UNION ALL SELECT * FROM t2 ORDER BY a LIMIT 3 OFFSET 2;
EXPLAIN SELECT * FROM t1 UNION ALL SELECT * FROM t2 ORDER BY a LIMIT 3 OFFSET 2;
DROP USER 'cejuser'@'localhost';
DROP TABLE t1, t2, t3, t4;
DROP DATABASE mdev25080;