diff options
author | Sergei Petrunia <psergey@askmonty.org> | 2020-03-26 15:01:44 +0300 |
---|---|---|
committer | Sergei Petrunia <psergey@askmonty.org> | 2020-03-26 15:01:44 +0300 |
commit | af4b2ae8588bd51cc17e66cfc8210c3225992fbe (patch) | |
tree | 3e05f500883c00f15f111bcfa7c96c4f2cf0d300 /mysql-test/suite/federated | |
parent | 1c8de231a3ea7ef2e08b1a5cfe17c37d733ea6ce (diff) | |
download | mariadb-git-af4b2ae8588bd51cc17e66cfc8210c3225992fbe.tar.gz |
MDEV-21887: federatedx crashes on SELECT ... INTO query in select_handler code
Backport to 10.4:
- Don't try to push down SELECTs that have a side effect
- In case the storage engine did support pushdown of SELECT with an INTO
clause, write the rows we've got from it into select->join->result,
and not thd->protocol. This way, SELECT ... INTO ... FROM
smart_engine_table will put the result into where instructed, and
NOT send it to the client.
Diffstat (limited to 'mysql-test/suite/federated')
-rw-r--r-- | mysql-test/suite/federated/federatedx_create_handlers.result | 22 | ||||
-rw-r--r-- | mysql-test/suite/federated/federatedx_create_handlers.test | 21 |
2 files changed, 41 insertions, 2 deletions
diff --git a/mysql-test/suite/federated/federatedx_create_handlers.result b/mysql-test/suite/federated/federatedx_create_handlers.result index 473972c2cd4..65a9d52803f 100644 --- a/mysql-test/suite/federated/federatedx_create_handlers.result +++ b/mysql-test/suite/federated/federatedx_create_handlers.result @@ -299,7 +299,27 @@ id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t3 ALL NULL NULL NULL NULL 7 1 PRIMARY <derived2> ref key0 key0 18 federated.t3.name 2 2 PUSHED DERIVED NULL NULL NULL NULL NULL NULL NULL NULL -DROP TABLE federated.t1, federated.t2, federated.t3; +# +# MDEV-21887: federatedx crashes on SELECT ... INTO query in select_handler code +# +CREATE TABLE federated.t4 ( +id int(20) NOT NULL, +name varchar(16) NOT NULL default '' +) engine=myisam; +insert into federated.t4 select * from federated.t1; +select * from federated.t4; +id name +1 zzz +3 xxx +4 xxx +5 yyy +7 yyy +select name into @var from federated.t1 where id=3 limit 1 ; +select @var; +@var +xxx +select name into outfile 'tmp.txt' from federated.t1; +DROP TABLE federated.t1, federated.t2, federated.t3, federated.t4; connection slave; DROP TABLE federated.t1, federated.t2; connection default; diff --git a/mysql-test/suite/federated/federatedx_create_handlers.test b/mysql-test/suite/federated/federatedx_create_handlers.test index 373b2aaaa33..42a03e60d67 100644 --- a/mysql-test/suite/federated/federatedx_create_handlers.test +++ b/mysql-test/suite/federated/federatedx_create_handlers.test @@ -147,8 +147,27 @@ FROM federated.t3, SELECT * FROM federated.t1 WHERE id >= 5) t WHERE federated.t3.name=t.name; +--echo # +--echo # MDEV-21887: federatedx crashes on SELECT ... INTO query in select_handler code +--echo # -DROP TABLE federated.t1, federated.t2, federated.t3; +CREATE TABLE federated.t4 ( + id int(20) NOT NULL, + name varchar(16) NOT NULL default '' +) engine=myisam; +insert into federated.t4 select * from federated.t1; + +--sorted_result +select * from federated.t4; + +select name into @var from federated.t1 where id=3 limit 1 ; +select @var; +select name into outfile 'tmp.txt' from federated.t1; + +let $path=`select concat(@@datadir, 'test/tmp.txt')`; +remove_file $path; + +DROP TABLE federated.t1, federated.t2, federated.t3, federated.t4; connection slave; DROP TABLE federated.t1, federated.t2; |