summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Babaev <igor@askmonty.org>2017-01-30 11:56:23 -0800
committerIgor Babaev <igor@askmonty.org>2017-01-31 20:37:25 -0800
commit81c1abe8cf3dda1fe097256a06daab3041409e14 (patch)
tree7199863b71245597b3e18b9bddd19152eb192725
parent1d96b09890966a45a9c3e4e17f973ecaaefb6a8f (diff)
downloadmariadb-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.result16
-rw-r--r--mysql-test/t/win.test16
-rw-r--r--sql/sql_select.cc3
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())