summaryrefslogtreecommitdiff
path: root/mysql-test/suite/federated
diff options
context:
space:
mode:
authorOleksandr Byelkin <sanja@mariadb.com>2023-01-18 16:45:59 +0100
committerOleksandr Byelkin <sanja@mariadb.com>2023-01-18 16:45:59 +0100
commit45087dd0b349062d4924ef932696dc674f10c396 (patch)
tree83f557ba3c386aae6c59992e1587315eb7a61660 /mysql-test/suite/federated
parent6ffe9ad0d4244a86476fab1485145c0c91871579 (diff)
parent08d4968404689331f8b89c185b92603dca044661 (diff)
downloadmariadb-git-45087dd0b349062d4924ef932696dc674f10c396.tar.gz
Merge branch '10.9' into 10.10
Diffstat (limited to 'mysql-test/suite/federated')
-rw-r--r--mysql-test/suite/federated/federatedx.result32
-rw-r--r--mysql-test/suite/federated/federatedx.test30
2 files changed, 62 insertions, 0 deletions
diff --git a/mysql-test/suite/federated/federatedx.result b/mysql-test/suite/federated/federatedx.result
index c18665e4d99..49deff81c4c 100644
--- a/mysql-test/suite/federated/federatedx.result
+++ b/mysql-test/suite/federated/federatedx.result
@@ -2325,6 +2325,38 @@ DROP TABLE federated.t1;
connection slave;
DROP TABLE federated.t1;
connection default;
+#
+# MDEV-30395 Wrong result with semijoin and Federated as outer table
+#
+create server s foreign data wrapper mysql options (host "127.0.0.1", database "test", user "root", port MASTER_PORT);
+CREATE TABLE t1 (a INT);
+INSERT INTO t1 VALUES (3),(2),(3);
+CREATE TABLE t2 (pk INT PRIMARY KEY);
+INSERT INTO t2 VALUES (1),(2),(3),(4);
+set @save_optimizer_switch=@@optimizer_switch;
+set optimizer_switch="materialization=off";
+CREATE TABLE t2_fed ENGINE=FEDERATED CONNECTION='s/t2';
+explain SELECT * FROM t2_fed WHERE pk IN ( SELECT a FROM t1 );
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2_fed ALL NULL NULL NULL NULL 4 Using where
+2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 3 Using where
+SELECT * FROM t2_fed WHERE pk IN ( SELECT a FROM t1 );
+pk
+2
+3
+SET optimizer_switch='semijoin=off';
+explain SELECT * FROM t2_fed WHERE pk IN ( SELECT a FROM t1 );
+id select_type table type possible_keys key key_len ref rows Extra
+1 PRIMARY t2_fed ALL NULL NULL NULL NULL 4 Using where
+2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 3 Using where
+SELECT * FROM t2_fed WHERE pk IN ( SELECT a FROM t1 );
+pk
+2
+3
+DROP TABLE t2_fed, t1, t2;
+set @@optimizer_switch=@save_optimizer_switch;
+DROP SERVER s;
+# End of 10.5 tests
connection master;
DROP TABLE IF EXISTS federated.t1;
DROP DATABASE IF EXISTS federated;
diff --git a/mysql-test/suite/federated/federatedx.test b/mysql-test/suite/federated/federatedx.test
index 51d34298626..7e5a335b786 100644
--- a/mysql-test/suite/federated/federatedx.test
+++ b/mysql-test/suite/federated/federatedx.test
@@ -2060,4 +2060,34 @@ connection slave;
DROP TABLE federated.t1;
connection default;
+--echo #
+--echo # MDEV-30395 Wrong result with semijoin and Federated as outer table
+--echo #
+
+
+--replace_result $MASTER_MYPORT MASTER_PORT
+eval create server s foreign data wrapper mysql options (host "127.0.0.1", database "test", user "root", port $MASTER_MYPORT);
+
+CREATE TABLE t1 (a INT);
+INSERT INTO t1 VALUES (3),(2),(3);
+CREATE TABLE t2 (pk INT PRIMARY KEY);
+INSERT INTO t2 VALUES (1),(2),(3),(4);
+
+set @save_optimizer_switch=@@optimizer_switch;
+set optimizer_switch="materialization=off";
+
+CREATE TABLE t2_fed ENGINE=FEDERATED CONNECTION='s/t2';
+explain SELECT * FROM t2_fed WHERE pk IN ( SELECT a FROM t1 );
+SELECT * FROM t2_fed WHERE pk IN ( SELECT a FROM t1 );
+SET optimizer_switch='semijoin=off';
+explain SELECT * FROM t2_fed WHERE pk IN ( SELECT a FROM t1 );
+SELECT * FROM t2_fed WHERE pk IN ( SELECT a FROM t1 );
+
+DROP TABLE t2_fed, t1, t2;
+set @@optimizer_switch=@save_optimizer_switch;
+
+DROP SERVER s;
+
+--echo # End of 10.5 tests
+
source include/federated_cleanup.inc;