summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleksandr Byelkin <sanja@mariadb.com>2019-10-04 16:46:41 +0200
committerOleksandr Byelkin <sanja@mariadb.com>2019-10-09 08:55:00 +0200
commitb7408be0c3a4027b505f6122306c8d88ad0e92b2 (patch)
tree91eedd8f341d730b7b5567ef766af733607cf90b
parentb1ac1742791ad72695f76cab27e45b3f37cc39bc (diff)
downloadmariadb-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.cc2
-rw-r--r--storage/sequence/mysql-test/sequence/group_by.result6
-rw-r--r--storage/sequence/mysql-test/sequence/group_by.test7
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