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 updates to the MDEV-25080 MTR test cases.

This commit is contained in:
Gagan Goel
2023-02-17 13:03:49 -05:00
parent 86dcf92d56
commit e987a766e0
2 changed files with 209 additions and 37 deletions

View File

@ -2,8 +2,8 @@
# MDEV-25080: Allow pushdown of queries involving UNIONs # MDEV-25080: Allow pushdown of queries involving UNIONs
# in outer select to foreign engines # in outer select to foreign engines
# #
# Uncomment the actual SELECTs and add ORDER BY clause # Remove the sorted_result MTR qualifier and add ORDER BY
# after MCOL-5222 is fixed # clause after MCOL-5222 is fixed
# #
CREATE USER IF NOT EXISTS'cejuser'@'localhost' IDENTIFIED BY 'Vagrant1|0000001'; CREATE USER IF NOT EXISTS'cejuser'@'localhost' IDENTIFIED BY 'Vagrant1|0000001';
GRANT ALL PRIVILEGES ON *.* TO 'cejuser'@'localhost'; GRANT ALL PRIVILEGES ON *.* TO 'cejuser'@'localhost';
@ -20,39 +20,128 @@ INSERT INTO t2 VALUES ('bcd'), ('cde'), ('def'), ('efg');
INSERT INTO t3 VALUES ('t3_myisam1'), ('t3_myisam2'), ('t3_myisam3'); INSERT INTO t3 VALUES ('t3_myisam1'), ('t3_myisam2'), ('t3_myisam3');
INSERT INTO t4 VALUES ('t4_myisam1'), ('t4_myisam2'), ('t4_myisam3'); INSERT INTO t4 VALUES ('t4_myisam1'), ('t4_myisam2'), ('t4_myisam3');
# Pushdown of the whole UNION # Pushdown of the whole UNION
SELECT * FROM t1 UNION SELECT * FROM t2;
a
abc
bcd
cde
def
efg
EXPLAIN SELECT * FROM t1 UNION SELECT * FROM t2; EXPLAIN SELECT * FROM t1 UNION SELECT * FROM t2;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
NULL PUSHED UNION NULL NULL NULL NULL NULL NULL NULL NULL NULL PUSHED UNION NULL NULL NULL NULL NULL NULL NULL NULL
SELECT * FROM t1 UNION ALL SELECT * FROM t2;
a
abc
bcd
bcd
cde
cde
def
efg
EXPLAIN SELECT * FROM t1 UNION ALL SELECT * FROM t2; EXPLAIN SELECT * FROM t1 UNION ALL SELECT * FROM t2;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
NULL PUSHED UNION NULL NULL NULL NULL NULL NULL NULL NULL NULL PUSHED UNION NULL NULL NULL NULL NULL NULL NULL NULL
# UNION with a foreign engine # UNION with a foreign engine
SELECT * FROM t1 UNION SELECT * FROM t3;
a
abc
bcd
cde
t3_myisam1
t3_myisam2
t3_myisam3
EXPLAIN SELECT * FROM t1 UNION SELECT * FROM t3; EXPLAIN SELECT * FROM t1 UNION SELECT * FROM t3;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
NULL PUSHED UNION NULL NULL NULL NULL NULL NULL NULL NULL NULL PUSHED UNION NULL NULL NULL NULL NULL NULL NULL NULL
# More than two SELECTs in a UNIT: # More than two SELECTs in a UNIT:
SELECT * FROM t1 UNION
SELECT * FROM t2 UNION ALL
SELECT * FROM t1;
a
abc
abc
bcd
bcd
cde
cde
def
efg
EXPLAIN SELECT * FROM t1 UNION EXPLAIN SELECT * FROM t1 UNION
SELECT * FROM t2 UNION ALL SELECT * FROM t2 UNION ALL
SELECT * FROM t1; SELECT * FROM t1;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
NULL PUSHED UNION NULL NULL NULL NULL NULL NULL NULL NULL NULL PUSHED UNION NULL NULL NULL NULL NULL NULL NULL NULL
(SELECT * FROM t1 UNION
SELECT * FROM t2) UNION ALL
SELECT * FROM t1;
a
abc
abc
bcd
bcd
cde
cde
def
efg
EXPLAIN (SELECT * FROM t1 UNION EXPLAIN (SELECT * FROM t1 UNION
SELECT * FROM t2) UNION ALL SELECT * FROM t2) UNION ALL
SELECT * FROM t1; SELECT * FROM t1;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
NULL PUSHED UNION NULL NULL NULL NULL NULL NULL NULL NULL NULL PUSHED UNION NULL NULL NULL NULL NULL NULL NULL NULL
SELECT * FROM t1 UNION
SELECT * FROM t2 UNION ALL
SELECT * FROM t3 UNION
SELECT * FROM t4;
a
abc
bcd
cde
def
efg
t3_myisam1
t3_myisam2
t3_myisam3
t4_myisam1
t4_myisam2
t4_myisam3
EXPLAIN SELECT * FROM t1 UNION EXPLAIN SELECT * FROM t1 UNION
SELECT * FROM t2 UNION ALL SELECT * FROM t2 UNION ALL
SELECT * FROM t3 UNION SELECT * FROM t3 UNION
SELECT * FROM t4; SELECT * FROM t4;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
NULL PUSHED UNION NULL NULL NULL NULL NULL NULL NULL NULL NULL PUSHED UNION NULL NULL NULL NULL NULL NULL NULL NULL
(SELECT * FROM t1 UNION
SELECT * FROM t2) UNION ALL
(SELECT * FROM t3 UNION
SELECT * FROM t4);
a
abc
bcd
cde
def
efg
t3_myisam1
t3_myisam2
t3_myisam3
t4_myisam1
t4_myisam2
t4_myisam3
EXPLAIN (SELECT * FROM t1 UNION EXPLAIN (SELECT * FROM t1 UNION
SELECT * FROM t2) UNION ALL SELECT * FROM t2) UNION ALL
(SELECT * FROM t3 UNION (SELECT * FROM t3 UNION
SELECT * FROM t4); SELECT * FROM t4);
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
NULL PUSHED UNION NULL NULL NULL NULL NULL NULL NULL NULL NULL PUSHED UNION NULL NULL NULL NULL NULL NULL NULL NULL
SELECT count(*) FROM t1 UNION
SELECT count(*) FROM t2 UNION ALL
SELECT count(*)+20 FROM t2 UNION
SELECT count(*)+5 FROM t1;
count(*)
24
3
4
8
EXPLAIN EXPLAIN
SELECT count(*) FROM t1 UNION SELECT count(*) FROM t1 UNION
SELECT count(*) FROM t2 UNION ALL SELECT count(*) FROM t2 UNION ALL
@ -91,6 +180,29 @@ SELECT a FROM
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
1 PUSHED SELECT NULL NULL NULL NULL NULL NULL NULL NULL 1 PUSHED SELECT NULL NULL NULL NULL NULL NULL NULL NULL
# Prepared statements # Prepared statements
PREPARE stmt FROM "SELECT * FROM t1 UNION
SELECT * FROM t2";
EXECUTE stmt;
a
abc
bcd
cde
def
efg
EXECUTE stmt;
a
abc
bcd
cde
def
efg
EXECUTE stmt;
a
abc
bcd
cde
def
efg
PREPARE stmt FROM "EXPLAIN SELECT * FROM t1 UNION PREPARE stmt FROM "EXPLAIN SELECT * FROM t1 UNION
SELECT * FROM t2"; SELECT * FROM t2";
EXECUTE stmt; EXECUTE stmt;
@ -99,6 +211,46 @@ NULL PUSHED UNION NULL NULL NULL NULL NULL NULL NULL NULL
EXECUTE stmt; EXECUTE stmt;
id select_type table type possible_keys key key_len ref rows Extra id select_type table type possible_keys key key_len ref rows Extra
NULL PUSHED UNION NULL NULL NULL NULL NULL NULL NULL NULL NULL PUSHED UNION NULL NULL NULL NULL NULL NULL NULL NULL
PREPARE stmt FROM "(SELECT * FROM t1 UNION
SELECT * FROM t2) UNION ALL
(SELECT * FROM t1 UNION
SELECT * FROM t2)";
EXECUTE stmt;
a
abc
abc
bcd
bcd
cde
cde
def
def
efg
efg
EXECUTE stmt;
a
abc
abc
bcd
bcd
cde
cde
def
def
efg
efg
EXECUTE stmt;
a
abc
abc
bcd
bcd
cde
cde
def
def
efg
efg
PREPARE stmt FROM "EXPLAIN (SELECT * FROM t1 UNION PREPARE stmt FROM "EXPLAIN (SELECT * FROM t1 UNION
SELECT * FROM t2) UNION ALL SELECT * FROM t2) UNION ALL
(SELECT * FROM t1 UNION (SELECT * FROM t1 UNION

View File

@ -2,12 +2,18 @@
--echo # MDEV-25080: Allow pushdown of queries involving UNIONs --echo # MDEV-25080: Allow pushdown of queries involving UNIONs
--echo # in outer select to foreign engines --echo # in outer select to foreign engines
--echo # --echo #
--echo # Uncomment the actual SELECTs and add ORDER BY clause --echo # Remove the sorted_result MTR qualifier and add ORDER BY
--echo # after MCOL-5222 is fixed --echo # clause after MCOL-5222 is fixed
--echo # --echo #
--source ../include/have_columnstore.inc --source ../include/have_columnstore.inc
if (!$MASTER_MYPORT)
{
# Running with --extern
let $MASTER_MYPORT=`SELECT @@port`;
}
# #
# Enable cross engine join # Enable cross engine join
# Configure user and password in Columnstore.xml file # Configure user and password in Columnstore.xml file
@ -45,57 +51,65 @@ INSERT INTO t3 VALUES ('t3_myisam1'), ('t3_myisam2'), ('t3_myisam3');
INSERT INTO t4 VALUES ('t4_myisam1'), ('t4_myisam2'), ('t4_myisam3'); INSERT INTO t4 VALUES ('t4_myisam1'), ('t4_myisam2'), ('t4_myisam3');
--echo # Pushdown of the whole UNION --echo # Pushdown of the whole UNION
#SELECT * FROM t1 UNION SELECT * FROM t2; --sorted_result
SELECT * FROM t1 UNION SELECT * FROM t2;
EXPLAIN SELECT * FROM t1 UNION SELECT * FROM t2; EXPLAIN SELECT * FROM t1 UNION SELECT * FROM t2;
#SELECT * FROM t1 UNION ALL SELECT * FROM t2; --sorted_result
SELECT * FROM t1 UNION ALL SELECT * FROM t2;
EXPLAIN SELECT * FROM t1 UNION ALL SELECT * FROM t2; EXPLAIN SELECT * FROM t1 UNION ALL SELECT * FROM t2;
--echo # UNION with a foreign engine --echo # UNION with a foreign engine
#SELECT * FROM t1 UNION SELECT * FROM t3; --sorted_result
SELECT * FROM t1 UNION SELECT * FROM t3;
EXPLAIN SELECT * FROM t1 UNION SELECT * FROM t3; EXPLAIN SELECT * FROM t1 UNION SELECT * FROM t3;
--echo # More than two SELECTs in a UNIT: --echo # More than two SELECTs in a UNIT:
#SELECT * FROM t1 UNION --sorted_result
# SELECT * FROM t2 UNION ALL SELECT * FROM t1 UNION
# SELECT * FROM t1; SELECT * FROM t2 UNION ALL
SELECT * FROM t1;
EXPLAIN SELECT * FROM t1 UNION EXPLAIN SELECT * FROM t1 UNION
SELECT * FROM t2 UNION ALL SELECT * FROM t2 UNION ALL
SELECT * FROM t1; SELECT * FROM t1;
#(SELECT * FROM t1 UNION --sorted_result
# SELECT * FROM t2) UNION ALL (SELECT * FROM t1 UNION
# SELECT * FROM t1; SELECT * FROM t2) UNION ALL
SELECT * FROM t1;
EXPLAIN (SELECT * FROM t1 UNION EXPLAIN (SELECT * FROM t1 UNION
SELECT * FROM t2) UNION ALL SELECT * FROM t2) UNION ALL
SELECT * FROM t1; SELECT * FROM t1;
#SELECT * FROM t1 UNION --sorted_result
# SELECT * FROM t2 UNION ALL SELECT * FROM t1 UNION
# SELECT * FROM t3 UNION SELECT * FROM t2 UNION ALL
# SELECT * FROM t4; SELECT * FROM t3 UNION
SELECT * FROM t4;
EXPLAIN SELECT * FROM t1 UNION EXPLAIN SELECT * FROM t1 UNION
SELECT * FROM t2 UNION ALL SELECT * FROM t2 UNION ALL
SELECT * FROM t3 UNION SELECT * FROM t3 UNION
SELECT * FROM t4; SELECT * FROM t4;
#(SELECT * FROM t1 UNION --sorted_result
# SELECT * FROM t2) UNION ALL (SELECT * FROM t1 UNION
# (SELECT * FROM t3 UNION SELECT * FROM t2) UNION ALL
# SELECT * FROM t4); (SELECT * FROM t3 UNION
SELECT * FROM t4);
EXPLAIN (SELECT * FROM t1 UNION EXPLAIN (SELECT * FROM t1 UNION
SELECT * FROM t2) UNION ALL SELECT * FROM t2) UNION ALL
(SELECT * FROM t3 UNION (SELECT * FROM t3 UNION
SELECT * FROM t4); SELECT * FROM t4);
#SELECT count(*) FROM t1 UNION --sorted_result
# SELECT count(*) FROM t2 UNION ALL SELECT count(*) FROM t1 UNION
# SELECT count(*)+20 FROM t2 UNION SELECT count(*) FROM t2 UNION ALL
# SELECT count(*)+5 FROM t1; SELECT count(*)+20 FROM t2 UNION
SELECT count(*)+5 FROM t1;
EXPLAIN EXPLAIN
SELECT count(*) FROM t1 UNION SELECT count(*) FROM t1 UNION
@ -119,12 +133,15 @@ EXPLAIN
(SELECT a FROM t1 UNION ALL SELECT a FROM t3) q ORDER BY a; (SELECT a FROM t1 UNION ALL SELECT a FROM t3) q ORDER BY a;
--echo # Prepared statements --echo # Prepared statements
#PREPARE stmt FROM "SELECT * FROM t1 UNION PREPARE stmt FROM "SELECT * FROM t1 UNION
# SELECT * FROM t2"; SELECT * FROM t2";
#EXECUTE stmt; --sorted_result
#EXECUTE stmt; EXECUTE stmt;
#EXECUTE stmt; --sorted_result
EXECUTE stmt;
--sorted_result
EXECUTE stmt;
PREPARE stmt FROM "EXPLAIN SELECT * FROM t1 UNION PREPARE stmt FROM "EXPLAIN SELECT * FROM t1 UNION
SELECT * FROM t2"; SELECT * FROM t2";
@ -132,14 +149,17 @@ PREPARE stmt FROM "EXPLAIN SELECT * FROM t1 UNION
EXECUTE stmt; EXECUTE stmt;
EXECUTE stmt; EXECUTE stmt;
#PREPARE stmt FROM "(SELECT * FROM t1 UNION PREPARE stmt FROM "(SELECT * FROM t1 UNION
# SELECT * FROM t2) UNION ALL SELECT * FROM t2) UNION ALL
# (SELECT * FROM t1 UNION (SELECT * FROM t1 UNION
# SELECT * FROM t2)"; SELECT * FROM t2)";
#EXECUTE stmt; --sorted_result
#EXECUTE stmt; EXECUTE stmt;
#EXECUTE stmt; --sorted_result
EXECUTE stmt;
--sorted_result
EXECUTE stmt;
PREPARE stmt FROM "EXPLAIN (SELECT * FROM t1 UNION PREPARE stmt FROM "EXPLAIN (SELECT * FROM t1 UNION
SELECT * FROM t2) UNION ALL SELECT * FROM t2) UNION ALL