diff options
author | Igor Babaev <igor@askmonty.org> | 2017-01-30 11:56:23 -0800 |
---|---|---|
committer | Igor Babaev <igor@askmonty.org> | 2017-01-31 20:37:25 -0800 |
commit | 81c1abe8cf3dda1fe097256a06daab3041409e14 (patch) | |
tree | 7199863b71245597b3e18b9bddd19152eb192725 | |
parent | 1d96b09890966a45a9c3e4e17f973ecaaefb6a8f (diff) | |
download | mariadb-git-81c1abe8cf3dda1fe097256a06daab3041409e14.tar.gz |
Fixed bug mdev-10875.
Now, after the implementation of mdev-8646
"Re-engineer the code for post-join operations"
create_sort_index() can be called for subqueries.
-rw-r--r-- | mysql-test/r/win.result | 16 | ||||
-rw-r--r-- | mysql-test/t/win.test | 16 | ||||
-rw-r--r-- | sql/sql_select.cc | 3 |
3 files changed, 32 insertions, 3 deletions
diff --git a/mysql-test/r/win.result b/mysql-test/r/win.result index c8c55b91016..1c46f43a22c 100644 --- a/mysql-test/r/win.result +++ b/mysql-test/r/win.result @@ -2382,3 +2382,19 @@ pk c CNT 10 2 0.5000 drop view v1,v2,v3,v4; drop table t0,t1; +# +# MDEV-10875: window function in subquery +# +CREATE TABLE t1 (i INT); +INSERT INTO t1 VALUES (3),(1); +CREATE TABLE t2 (c VARCHAR(8)); +INSERT INTO t2 VALUES ('foo'),('bar'),('foo'); +SELECT COUNT(*) OVER (PARTITION BY c) FROM t2; +COUNT(*) OVER (PARTITION BY c) +2 +1 +2 +SELECT * FROM t1 WHERE i IN ( SELECT COUNT(*) OVER (PARTITION BY c) FROM t2 ); +i +1 +DROP TABLE t1, t2; diff --git a/mysql-test/t/win.test b/mysql-test/t/win.test index 7052368cf9c..b9490c82039 100644 --- a/mysql-test/t/win.test +++ b/mysql-test/t/win.test @@ -1426,3 +1426,19 @@ select * from v4; drop view v1,v2,v3,v4; drop table t0,t1; + +--echo # +--echo # MDEV-10875: window function in subquery +--echo # + +CREATE TABLE t1 (i INT); +INSERT INTO t1 VALUES (3),(1); + +CREATE TABLE t2 (c VARCHAR(8)); +INSERT INTO t2 VALUES ('foo'),('bar'),('foo'); + +SELECT COUNT(*) OVER (PARTITION BY c) FROM t2; + +SELECT * FROM t1 WHERE i IN ( SELECT COUNT(*) OVER (PARTITION BY c) FROM t2 ); + +DROP TABLE t1, t2; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 2889e1e1549..0678955883b 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -21403,9 +21403,6 @@ create_sort_index(THD *thd, JOIN *join, JOIN_TAB *tab, Filesort *fsort) table= tab->table; select= fsort->select; - /* Currently ORDER BY ... LIMIT is not supported in subqueries. */ - DBUG_ASSERT(join->group_list || !join->is_in_subquery()); - table->status=0; // May be wrong if quick_select if (!tab->preread_init_done && tab->preread_init()) |