From e987a766e0c6165886a0e843ff34117ecb09a816 Mon Sep 17 00:00:00 2001 From: Gagan Goel Date: Fri, 17 Feb 2023 13:03:49 -0500 Subject: [PATCH] MDEV-25080 Some updates to the MDEV-25080 MTR test cases. --- .../columnstore/basic/r/mdev-25080.result | 156 +++++++++++++++++- .../columnstore/basic/t/mdev-25080.test | 90 ++++++---- 2 files changed, 209 insertions(+), 37 deletions(-) diff --git a/mysql-test/columnstore/basic/r/mdev-25080.result b/mysql-test/columnstore/basic/r/mdev-25080.result index b81b8a6e6..054ebae26 100644 --- a/mysql-test/columnstore/basic/r/mdev-25080.result +++ b/mysql-test/columnstore/basic/r/mdev-25080.result @@ -2,8 +2,8 @@ # MDEV-25080: Allow pushdown of queries involving UNIONs # in outer select to foreign engines # -# Uncomment the actual SELECTs and add ORDER BY clause -# after MCOL-5222 is fixed +# Remove the sorted_result MTR qualifier and add ORDER BY +# clause after MCOL-5222 is fixed # CREATE USER IF NOT EXISTS'cejuser'@'localhost' IDENTIFIED BY 'Vagrant1|0000001'; 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 t4 VALUES ('t4_myisam1'), ('t4_myisam2'), ('t4_myisam3'); # 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; id select_type table type possible_keys key key_len ref rows Extra 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; id select_type table type possible_keys key key_len ref rows Extra NULL PUSHED UNION NULL NULL NULL NULL NULL NULL NULL NULL # 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; id select_type table type possible_keys key key_len ref rows Extra NULL PUSHED UNION NULL NULL NULL NULL NULL NULL NULL NULL # 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 SELECT * FROM t2 UNION ALL SELECT * FROM t1; id select_type table type possible_keys key key_len ref rows Extra 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 SELECT * FROM t2) UNION ALL SELECT * FROM t1; id select_type table type possible_keys key key_len ref rows Extra 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 SELECT * FROM t2 UNION ALL SELECT * FROM t3 UNION SELECT * FROM t4; id select_type table type possible_keys key key_len ref rows Extra 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 SELECT * FROM t2) UNION ALL (SELECT * FROM t3 UNION SELECT * FROM t4); id select_type table type possible_keys key key_len ref rows Extra 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 SELECT count(*) FROM t1 UNION 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 1 PUSHED SELECT NULL NULL NULL NULL NULL NULL NULL NULL # 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 SELECT * FROM t2"; EXECUTE stmt; @@ -99,6 +211,46 @@ 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 +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 SELECT * FROM t2) UNION ALL (SELECT * FROM t1 UNION diff --git a/mysql-test/columnstore/basic/t/mdev-25080.test b/mysql-test/columnstore/basic/t/mdev-25080.test index 883b62697..d4f5536d3 100644 --- a/mysql-test/columnstore/basic/t/mdev-25080.test +++ b/mysql-test/columnstore/basic/t/mdev-25080.test @@ -2,12 +2,18 @@ --echo # MDEV-25080: Allow pushdown of queries involving UNIONs --echo # in outer select to foreign engines --echo # ---echo # Uncomment the actual SELECTs and add ORDER BY clause ---echo # after MCOL-5222 is fixed +--echo # Remove the sorted_result MTR qualifier and add ORDER BY +--echo # clause after MCOL-5222 is fixed --echo # --source ../include/have_columnstore.inc +if (!$MASTER_MYPORT) +{ + # Running with --extern + let $MASTER_MYPORT=`SELECT @@port`; +} + # # Enable cross engine join # 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'); --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; -#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; --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; --echo # More than two SELECTs in a UNIT: -#SELECT * FROM t1 UNION -# SELECT * FROM t2 UNION ALL -# SELECT * FROM t1; +--sorted_result +SELECT * FROM t1 UNION + SELECT * FROM t2 UNION ALL + SELECT * FROM t1; EXPLAIN SELECT * FROM t1 UNION SELECT * FROM t2 UNION ALL SELECT * FROM t1; -#(SELECT * FROM t1 UNION -# SELECT * FROM t2) UNION ALL -# SELECT * FROM t1; +--sorted_result +(SELECT * FROM t1 UNION + SELECT * FROM t2) UNION ALL + SELECT * FROM t1; EXPLAIN (SELECT * FROM t1 UNION SELECT * FROM t2) UNION ALL SELECT * FROM t1; -#SELECT * FROM t1 UNION -# SELECT * FROM t2 UNION ALL -# SELECT * FROM t3 UNION -# SELECT * FROM t4; +--sorted_result +SELECT * FROM t1 UNION + SELECT * FROM t2 UNION ALL + SELECT * FROM t3 UNION + SELECT * FROM t4; EXPLAIN SELECT * FROM t1 UNION SELECT * FROM t2 UNION ALL SELECT * FROM t3 UNION SELECT * FROM t4; -#(SELECT * FROM t1 UNION -# SELECT * FROM t2) UNION ALL -# (SELECT * FROM t3 UNION -# SELECT * FROM t4); +--sorted_result +(SELECT * FROM t1 UNION + SELECT * FROM t2) UNION ALL + (SELECT * FROM t3 UNION + SELECT * FROM t4); EXPLAIN (SELECT * FROM t1 UNION SELECT * FROM t2) UNION ALL (SELECT * FROM t3 UNION SELECT * FROM t4); -#SELECT count(*) FROM t1 UNION -# SELECT count(*) FROM t2 UNION ALL -# SELECT count(*)+20 FROM t2 UNION -# SELECT count(*)+5 FROM t1; +--sorted_result +SELECT count(*) FROM t1 UNION + SELECT count(*) FROM t2 UNION ALL + SELECT count(*)+20 FROM t2 UNION + SELECT count(*)+5 FROM t1; EXPLAIN SELECT count(*) FROM t1 UNION @@ -119,12 +133,15 @@ EXPLAIN (SELECT a FROM t1 UNION ALL SELECT a FROM t3) q ORDER BY a; --echo # Prepared statements -#PREPARE stmt FROM "SELECT * FROM t1 UNION -# SELECT * FROM t2"; +PREPARE stmt FROM "SELECT * FROM t1 UNION + SELECT * FROM t2"; -#EXECUTE stmt; -#EXECUTE stmt; -#EXECUTE stmt; +--sorted_result +EXECUTE stmt; +--sorted_result +EXECUTE stmt; +--sorted_result +EXECUTE stmt; PREPARE stmt FROM "EXPLAIN SELECT * FROM t1 UNION SELECT * FROM t2"; @@ -132,14 +149,17 @@ PREPARE stmt FROM "EXPLAIN SELECT * FROM t1 UNION EXECUTE stmt; EXECUTE stmt; -#PREPARE stmt FROM "(SELECT * FROM t1 UNION -# SELECT * FROM t2) UNION ALL -# (SELECT * FROM t1 UNION -# SELECT * FROM t2)"; +PREPARE stmt FROM "(SELECT * FROM t1 UNION + SELECT * FROM t2) UNION ALL + (SELECT * FROM t1 UNION + SELECT * FROM t2)"; -#EXECUTE stmt; -#EXECUTE stmt; -#EXECUTE stmt; +--sorted_result +EXECUTE stmt; +--sorted_result +EXECUTE stmt; +--sorted_result +EXECUTE stmt; PREPARE stmt FROM "EXPLAIN (SELECT * FROM t1 UNION SELECT * FROM t2) UNION ALL