summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Petrunia <psergey@askmonty.org>2016-04-16 20:41:06 +0300
committerSergei Petrunia <psergey@askmonty.org>2016-04-16 20:41:06 +0300
commit957809b19098b677bc0512dd8fbc55c9bdb2a6bb (patch)
treecd34b41d2908d3a36d6572ecee210b47cf0d957f
parenta81e711a06f60555ec80221385ed4e87ebb7e97f (diff)
downloadmariadb-git-bb-10.2-mdev9543.tar.gz
MDEV-9922: Assertion `!join->only_const_tables() && fsort' failedbb-10.2-mdev9543
When join output is just one row, we still need to compute window function values for it. We could skip invoking filesort for it, but it doesn't seem to be worth it to do such optimization.
-rw-r--r--mysql-test/r/win.result9
-rw-r--r--mysql-test/t/win.test8
-rw-r--r--sql/sql_select.cc2
3 files changed, 17 insertions, 2 deletions
diff --git a/mysql-test/r/win.result b/mysql-test/r/win.result
index d287e458b39..a6b43788ffe 100644
--- a/mysql-test/r/win.result
+++ b/mysql-test/r/win.result
@@ -1,4 +1,5 @@
drop table if exists t1,t2;
+drop view if exists v1;
# ########################################################################
# # Parser tests
# ########################################################################
@@ -1950,3 +1951,11 @@ i sum(i) over (partition by i)
1 1
2 2
drop table t1;
+#
+# MDEV-9922: Assertion `!join->only_const_tables() && fsort' failed in int create_sort_index
+#
+create view v1 as select 1 as i;
+select rank() over (order by i) from v1;
+rank() over (order by i)
+1
+drop view v1;
diff --git a/mysql-test/t/win.test b/mysql-test/t/win.test
index df93ec41c2f..09ddf41b4f0 100644
--- a/mysql-test/t/win.test
+++ b/mysql-test/t/win.test
@@ -4,6 +4,7 @@
--disable_warnings
drop table if exists t1,t2;
+drop view if exists v1;
--enable_warnings
--echo # ########################################################################
@@ -1193,3 +1194,10 @@ insert into t1 values (1),(2);
select i, sum(i) over (partition by i) from t1;
drop table t1;
+--echo #
+--echo # MDEV-9922: Assertion `!join->only_const_tables() && fsort' failed in int create_sort_index
+--echo #
+create view v1 as select 1 as i;
+select rank() over (order by i) from v1;
+drop view v1;
+
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index b5099b10297..52e035d6e75 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -21221,8 +21221,6 @@ create_sort_index(THD *thd, JOIN *join, JOIN_TAB *tab, Filesort *fsort)
if (fsort == NULL)
fsort= tab->filesort;
- // One row, no need to sort. make_tmp_tables_info should already handle this.
- DBUG_ASSERT(!join->only_const_tables() && fsort);
table= tab->table;
select= fsort->select;