diff options
author | Oleksandr Byelkin <sanja@mariadb.com> | 2023-01-18 16:39:11 +0100 |
---|---|---|
committer | Oleksandr Byelkin <sanja@mariadb.com> | 2023-01-18 16:39:11 +0100 |
commit | 08d4968404689331f8b89c185b92603dca044661 (patch) | |
tree | 89f9e7edd07e3448cbf9f67467fd33bdcf6d98d9 /mysql-test/suite/federated | |
parent | b915b96f7224e04d4509f1e4c6a4193347715097 (diff) | |
parent | 26d8485244bcf94923ab5bbd754276c9010dd569 (diff) | |
download | mariadb-git-08d4968404689331f8b89c185b92603dca044661.tar.gz |
Merge branch '10.8' into 10.9
Diffstat (limited to 'mysql-test/suite/federated')
-rw-r--r-- | mysql-test/suite/federated/federatedx.result | 32 | ||||
-rw-r--r-- | mysql-test/suite/federated/federatedx.test | 30 |
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; |