diff options
author | Oleksandr Byelkin <sanja@mariadb.com> | 2019-10-04 16:46:41 +0200 |
---|---|---|
committer | Oleksandr Byelkin <sanja@mariadb.com> | 2019-10-09 08:55:00 +0200 |
commit | b7408be0c3a4027b505f6122306c8d88ad0e92b2 (patch) | |
tree | 91eedd8f341d730b7b5567ef766af733607cf90b | |
parent | b1ac1742791ad72695f76cab27e45b3f37cc39bc (diff) | |
download | mariadb-git-b7408be0c3a4027b505f6122306c8d88ad0e92b2.tar.gz |
MDEV-20753: Sequence with limit 0 crashes server
Do not try to push down conditions to engine if query was resolved without tables (and so the engine).
-rw-r--r-- | sql/sql_select.cc | 2 | ||||
-rw-r--r-- | storage/sequence/mysql-test/sequence/group_by.result | 6 | ||||
-rw-r--r-- | storage/sequence/mysql-test/sequence/group_by.test | 7 |
3 files changed, 14 insertions, 1 deletions
diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 460c7346cdd..a68eaf00424 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -2795,7 +2795,7 @@ bool JOIN::make_aggr_tables_info() distinct in the engine, so we do this for all queries, not only GROUP BY queries. */ - if (tables_list && !procedure) + if (tables_list && top_join_tab_count && !procedure) { /* At the moment we only support push down for queries where diff --git a/storage/sequence/mysql-test/sequence/group_by.result b/storage/sequence/mysql-test/sequence/group_by.result index 2941e85c1f4..7902fe6a348 100644 --- a/storage/sequence/mysql-test/sequence/group_by.result +++ b/storage/sequence/mysql-test/sequence/group_by.result @@ -97,3 +97,9 @@ count(NULL) select count(NULL) from seq_1_to_3; count(NULL) 0 +# +# MDEV-20753: Sequence with limit 0 crashes server +# +select count(NULL) from seq_1_to_3 limit 0; +count(NULL) +# End of 10.3 tests diff --git a/storage/sequence/mysql-test/sequence/group_by.test b/storage/sequence/mysql-test/sequence/group_by.test index b3f4ab58771..18e44cd2ab1 100644 --- a/storage/sequence/mysql-test/sequence/group_by.test +++ b/storage/sequence/mysql-test/sequence/group_by.test @@ -49,3 +49,10 @@ explain select count(*) from seq_1_to_15_step_2 group by mod(seq,2); create temporary table t1 select * from seq_1_to_3; select count(NULL) from t1; select count(NULL) from seq_1_to_3; + +--echo # +--echo # MDEV-20753: Sequence with limit 0 crashes server +--echo # +select count(NULL) from seq_1_to_3 limit 0; + +--echo # End of 10.3 tests |