diff options
author | Sergei Petrunia <psergey@askmonty.org> | 2016-04-16 20:41:06 +0300 |
---|---|---|
committer | Sergei Petrunia <psergey@askmonty.org> | 2016-04-16 20:41:06 +0300 |
commit | 957809b19098b677bc0512dd8fbc55c9bdb2a6bb (patch) | |
tree | cd34b41d2908d3a36d6572ecee210b47cf0d957f | |
parent | a81e711a06f60555ec80221385ed4e87ebb7e97f (diff) | |
download | mariadb-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.result | 9 | ||||
-rw-r--r-- | mysql-test/t/win.test | 8 | ||||
-rw-r--r-- | sql/sql_select.cc | 2 |
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; |