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-04 16:46:41 +0200
commit52a3e03bc8e3d9758d66c5e325319faca52e9772 (patch)
tree65358fc27e7a4fe6ba398a60ff499eaaedffc380
parent5b2fa078e8aee75a180461963bd54ce885445c17 (diff)
downloadmariadb-git-bb-10.3-MDEV-20753.tar.gz
MDEV-20753: Sequence with limit 0 crashes serverbb-10.3-MDEV-20753
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..143a33c72f5 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 && table_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